SQL查询 - 如何不包含某些结果

时间:2012-05-16 05:08:33

标签: sql postgresql

如果在我无法正确确定之前询问此问题,我道歉。我在表中有一个代码列,想要查询它,但删除一些特定代码的元素。假设我想从4开始使用代码,但不包含第6个数字为9的代码的元素(1121290)。

代码列包含最大长度为8个字符的数字字符串。我想几乎所有以4开头的东西,除了以411,427和428开头的元素

4 个答案:

答案 0 :(得分:1)

是的,你可以这样提出查询: -

我有6位数代码的列元素。

我取第一个数字是4或6的元素是9。

我们必须使用%_来获取..

SELECT element  FROM "table" WHERE element LIKE '%4____9%';

尝试一下它会起作用。

以4开头的所有内容除了以411,427和428开头的元素外: -

 SELECT element  FROM "table" WHERE element LIKE '%4__';

第一个数字是4和第6个数字不是9:我测试了这个它工作正常试试这个: -

SELECT element  
FROM "table" 
WHERE element NOT LIKE '%_____9' and element LIKE '%4_____'

答案 1 :(得分:1)

简单地拼出where子句中的每个条件可能是最容易的:

WHERE code like '4____9%' AND code NOT LIKE '411%' AND code NOT LIKE '427%' AND code NOT LIKE '428%'

额外的条件不会对查询的效率造成太大影响;无论如何,它必须以 4 开始扫描每一行。

答案 2 :(得分:0)

假设您的“CODE”字段是varchar并且您使用的是SQL Server, 您可以使用以下查询

select * from yourTable
where code like '4%'
AND CHARINDEX('9',code)<>6

答案 3 :(得分:0)

这是一个更紧凑的版本。

`SELECT * FROM table_name WHERE code IN ('4%') and code NOT IN ('411%','427%', '428%','_____9%');`