如果在我无法正确确定之前询问此问题,我道歉。我在表中有一个代码列,想要查询它,但删除一些特定代码的元素。假设我想从4开始使用代码,但不包含第6个数字为9的代码的元素(1121290)。
代码列包含最大长度为8个字符的数字字符串。我想几乎所有以4开头的东西,除了以411,427和428开头的元素
答案 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%');`