12

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

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

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

4

4 回答 4

22

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

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

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

于 2009-12-16T22:24:48.707 回答
5

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

SELECT * FROM table WHERE column LIKE '%pdd_%' and column NOT LIKE 'pdd_%'
于 2009-12-16T22:24:56.340 回答
4
SELECT * FROM table WHERE column LIKE '%pdd%' AND column NOT LIKE 'pdd%'

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

于 2009-12-16T22:50:25.317 回答
0

尝试:

SELECT * FROM table WHERE column NOT LIKE 'pdd%'
于 2009-12-16T22:23:50.630 回答