【发布时间】:2015-06-08 13:15:01
【问题描述】:
我想使用 SQLite 中的查询返回搜索到的词,包括出现在搜索词之前和之后的相邻词。是否有可能做到这一点?还是我应该尝试其他方式?
例如对于下面的句子(使用数据库表中的描述列,列名是DESC):
> select DESC from TABLE_NAME where DESC like 'popular';
哪个会返回:
One of the most popular methods
但是,我也想返回两个相邻的词“大多数”和“方法”,像这样:
most popular methods
我尝试使用 REGEXP 进行检查,但以下内容不起作用:
@"SELECT Desc FROM tablename WHERE LineText REGEXP '(^| )popular( |$)'"
@"SELECT LineText FROM table1 WHERE LineText REGEXP '[[:<:]popular[[:>:]'"
我可以得到那些带有查询或其他正则表达式的吗?
【问题讨论】:
-
这是什么意思:“我想要两个相邻的词也“大多数”和“方法”。从上面的文字。”?另外,您使用的是 MySQL 还是 SQLite?
-
在MySQL中,你可以试试
@"SELECT Desc FROM tablename WHERE LineText REGEXP '[[:<:]]popular[[:>:]]'"。另外,您可以查看@"SELECT Desc FROM tablename WHERE LineText LIKE '%popular%'"。 -
@stribizhev,是的,我之前也检查过这个,但它返回 nil NSRegularExpression.. 所以语法方面可能有什么问题吗?不确定
-
@GordonLinoff 这是上述问题“最流行的方法之一”中的示例文本。当用户搜索“流行”词时,我也想要“大多数”和“方法”词。这两个词都出现在上面的句子中。
-
在 SQLite3 中,您可以尝试像这样使用 REGEXP:
@"SELECT Desc FROM tablename WHERE LineText REGEXP '\\bpopular\\b'"。它对你有用吗?
标签: ios mysql regex sqlite boolean-search