SQLite3, MATCH and OR

6

是否可以将MATCHOR组合使用?

例如,

SELECT * FROM myTable WHERE name MATCH 'andrew' OR name MATCH 'bill';

不会产生任何结果,而

SELECT * FROM myTable WHERE name MATCH 'andrew';

SELECT * FROM myTable WHERE name MATCH 'bill';

都会产生结果。

%%

编辑。带有OR的选择错误代码是1,因此它在某种程度上格式不正确。第二个和第三个结果为0,因此它们没有问题。我不确定哪里出了问题。

2个回答

10

16 SDiz:谢谢你。有没有办法混合使用MATCHREGEXP - Ken
仅适用于虚拟表的一项额外信息匹配可用,对于常规表使用“like”。 - CoDe
1
如何匹配半个单词?假设我已经查询了“andr”。我该如何使用模式进行匹配? - Hitesh Danidhariya
正在寻找这样的东西...SELECT * FROM mytable WHERE name MATCH '("andrew" OR "drew") OR bill'; 参考 https://sqlite.org/fts3.html#_set_operations_using_the_enhanced_query_syntax - Clocker

0
SELECT * FROM myTable WHERE name MATCH 'andrew OR bill'

SELECT * FROM myTable WHERE name MATCH ('andrew' OR 'bill')

c.execute("SELECT * FROM myTable WHERE name MATCH (? OR ?)", ('andrew', 'bill'))
#safe from SQL injection attacks by escaping the variables.

SQLite understands the following binary operators, in order from highest to lowest precedence:

||
*    /    %
+    -
<<   >>   &    |
<    <=   >    >=
=    ==   !=   <>   IS   IS NOT   IN   LIKE   GLOB   MATCH   REGEXP
AND

OR

Supported unary prefix operators are these:

-    +    ~    NOT

https://www.sqlite.org/lang_expr.html


MATCH (... OR ...)不是您想要的功能。整个子表达式会被传递给与虚拟表格连接的扩展程序,并由其处理传递的内容。除了单个字符串之外,FTS扩展程序和spellfix1扩展程序均不支持其他任何内容。FTS扩展支持嵌入在字符串中的更丰富的查询语言,并且不使用SQLite运算符。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接