如果在我无法正确形式化之前提出这个问题,我深表歉意。我在表中有一个代码列,想要查询它,但删除了一些带有特定代码的元素。假设我想获取代码从 4 开始的元素,但不包括代码中第 6 个数字为 9 (1121290) 的元素。
代码列包含最大长度为 8 个字符的数字字符串。我想拿几乎所有以 4 开头的东西,除了以 411、427 和 428 开头的元素
如果在我无法正确形式化之前提出这个问题,我深表歉意。我在表中有一个代码列,想要查询它,但删除了一些带有特定代码的元素。假设我想获取代码从 4 开始的元素,但不包括代码中第 6 个数字为 9 (1121290) 的元素。
代码列包含最大长度为 8 个字符的数字字符串。我想拿几乎所有以 4 开头的东西,除了以 411、427 和 428 开头的元素
是的,您可以这样进行查询:-
我有 6 位代码的列元素。
我正在获取第 1 位为 4 或第 6 位为 9 的元素。
我们必须使用%
and_
来获取..
SELECT element FROM "table" WHERE element LIKE '%4____9%';
试试这个它会工作。
除了以 411、427 和 428 开头的元素之外,所有以 4 开头的元素:-
SELECT element FROM "table" WHERE element LIKE '%4__';
第一个数字是 4 而第 6 个不是 9:我测试了这个,它工作正常试试这个:-
SELECT element
FROM "table"
WHERE element NOT LIKE '%_____9' and element LIKE '%4_____'
在 where 子句中简单地拼出每个条件可能是最简单的:
WHERE code like '4____9%' AND code NOT LIKE '411%' AND code NOT LIKE '427%' AND code NOT LIKE '428%'
额外的条件不会对查询的效率造成太大的影响;无论如何,它必须扫描从4开始的每一行。
假设您的“CODE”字段是 varchar 并且您使用的是 SQL Server,您可以使用以下查询
select * from yourTable
where code like '4%'
AND CHARINDEX('9',code)<>6
这是一个更紧凑的版本。
`SELECT * FROM table_name WHERE code IN ('4%') and code NOT IN ('411%','427%', '428%','_____9%');`