我有80%的时间在SQL中使用LIKE,如下所示:
SELECT * FROM mytable WHERE field LIKE "%foo%"
有什么我可以做的操作员
SELECT * FROM mytable WHERE field CONTAINS "foo"
我正在使用MySQL。
答案 0 :(得分:2)
如果您正在寻找替代品,请不要忘记以下内容:
SELECT * FROM mytable WHERE field RLIKE "foo";
尽管RLIKE
将文本视为正则表达式,所以?
和*
之类的字符具有特殊的含义。
您还可以使用full-text indexes and their corresponding functions搜索:
SELECT * FROM mytable WHERE MATCH (field) AGAINST "foo";
全文索引的性能比进行任何类型的子字符串搜索要快得多。子字符串LIKE
需要进行痛苦的表扫描。
答案 1 :(得分:1)
还有LOCATE
您可以使用
SELECT * FROM mytable WHERE LOCATE('foo',field) > 1