我必须使用这种格式where A operand B.A是领域; 我希望B是"文本1"或"文本2",因此如果A具有"text 1 texttext"或"texttext 2"之类的数据,则查询将具有结果.
但是我该怎么写呢?MySQL是否支持类似的东西
where A contains ('text 1' OR 'text 2')? `
Run Code Online (Sandbox Code Playgroud)
Spu*_*ley 34
两种选择:
使用LIKE关键字以及字符串中的百分号
select * from table where field like '%a%' or field like '%b%'.
Run Code Online (Sandbox Code Playgroud)
(注意:如果您的搜索字符串包含百分号,则需要将它们转义)
如果您正在寻找比您在示例中指定的更复杂的字符串组合,则可以使用正则表达式(正则表达式):
有关如何使用它们的更多信息,请参阅MySQL手册:http://dev.mysql.com/doc/refman/5.1/en/regexp.html
其中,使用LIKE是最常用的解决方案 - 它是标准的SQL,并且是常用的.正则表达式不太常用但功能更强大.
请注意,无论您选择哪种方式,都需要了解可能的性能影响.搜索这样的子字符串意味着查询必须扫描整个表.如果你有一个大表,这可能会导致一个非常慢的查询,并且没有任何索引可以提供帮助.
如果这对你来说是一个问题,并且你需要反复搜索相同的东西,你可能更愿意做一些事情,比如在表格中添加一个标志字段,指定字符串字段包含相关的子字符串.字符串.如果在插入更新记录时将此标志字段保持为最新状态,则只需在要搜索时查询该标志即可.这可以编入索引,并使您的查询更快.是否值得付出努力取决于你,这取决于性能的糟糕程度LIKE.
您可以像这样编写查询:
SELECT * FROM MyTable WHERE (A LIKE '%text1%' OR A LIKE '%text2%')
Run Code Online (Sandbox Code Playgroud)
这%是一个通配符,意味着它搜索列A包含text1或text2的所有行
| 归档时间: |
|
| 查看次数: |
106251 次 |
| 最近记录: |