执行此查询的最佳方式
SELECT * FROM `table` WHERE `column` like '%abc% %xcdb%' OR `column` like '%abc% %dfhj%'
这里第一个变量保持不变,但第二个变量更改为让我们说一个10到20的数组
因此,这是一种更好,更快的方式来重现这种迭代(column
喜欢)
表格设计
<table >
<tr>
<td>id</td>
<td>column</td>
<td>other</td>
</tr>
<tr>
<td>1;</td>
<td>fsyd,**abc**,jgd,**xcdb**,sdfr</td>
<td>tom</td>
</tr>
<tr>
<td>2</td>
<td>wer,tyuy,dhjd,dbhd</td>
<td>john</td>
</tr>
<tr>
<td>3;</td>
<td>asy,gtyt,bnhhs,**abc**,bgy,trdcv,**dfhj**</td>
<td>colin</td>
</tr>
<tr>
<td>4</td>
<td>wer,**xcdb**,dhjd,**abc**,dbhd</td>
<td>john</td>
</tr>
</table>
此查询返回id(1和3)的结果,但不会检查序列。 这是一个正确的选择语句,并返回我想要的结果,但我只是想要一个更好的方法来做到这一点。
答案 0 :(得分:0)
根据您的要求和订单的含义,您有两种选择:
LIKE
个查询(正如您所做的那样)我的理解是MySQL中的正则表达式有显着的性能损失,但我无法直接验证。如果您需要,我会尝试使用正则表达式发布您的查询示例,我有几分钟的时间来测试。
应该是这样的:
SELECT * FROM `table` WHERE `column` REGEXP('.*abc.*((xcdb)|(dfhj).*)')
在这里查看SQLFiddle中的证据:http://sqlfiddle.com/#!2/8cd26/1