MySQL LIKE语句在除字符串开头之外的任何位置查找子字符串

时间:2009-12-16 22:22:16

标签: mysql wildcard sql-like

我有一个SQL查询SELECT * FROM table WHERE column LIKE '%pdd%'

问题是我需要得到所有结果,不包括那些以“pdd”开头的结果,我的意思是找到“pdd”不在开头的所有内容。怎么可能呢?

当它不在列的开头时,我需要匹配“pdd”。

4 个答案:

答案 0 :(得分:22)

我假设你的意思是所有匹配“pdd”的行,除了那些“pdd”在开头的行。

SELECT * FROM table WHERE column LIKE '_%pdd%'.

_谓词中的“LIKE”通配符表示“正常表达式中的一个”,相当于正则表达式中的“.”。

答案 1 :(得分:5)

如果我正确理解您的要求,您需要的是:

SELECT * FROM table WHERE column LIKE '%pdd_%' and column NOT LIKE 'pdd_%'

答案 2 :(得分:4)

SELECT * FROM table WHERE column LIKE '%pdd%' AND column NOT LIKE 'pdd%'

您可以根据表格中出现这些事件的频率来优化查询。

答案 3 :(得分:0)

尝试:

SELECT * FROM table WHERE column NOT LIKE 'pdd%'