2

如果在我无法正确形式化之前提出这个问题,我深表歉意。我在表中有一个代码列,想要查询它,但删除了一些带有特定代码的元素。假设我想获取代码从 4 开始的元素,但不包括代码中第 6 个数字为 9 (1121290) 的元素。

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

4

4 回答 4

1

是的,您可以这样进行查询:-

我有 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_____'
于 2012-05-16T05:20:58.923 回答
1

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

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

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

于 2012-05-16T05:27:26.123 回答
0

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

select * from yourTable
where code like '4%'
AND CHARINDEX('9',code)<>6
于 2012-05-16T05:18:01.173 回答
0

这是一个更紧凑的版本。

`SELECT * FROM table_name WHERE code IN ('4%') and code NOT IN ('411%','427%', '428%','_____9%');`
于 2012-05-16T06:20:28.667 回答