SQL Server中的数字范围的通配符

时间:2015-12-07 20:46:21

标签: sql sql-server range

sql server中的模式匹配并不像regex那样工作。是否可以使用LIKE来匹配数字范围?我需要做这样的事情:

ABCD 1
ABCD 2
ABCD 3
ABCD 4
ABCD 8
ABCD 9
ABCD 10
...
ABCD 20

我想从" ABCD 1"中选择所有数据。到" ABCD 20"。但是我想忽略" ABCD 4"之间的任何事情。和" ABCD 8"。当然我可以做OR条件,但我只想检查是否有更优雅的方式。

TIA。

3 个答案:

答案 0 :(得分:2)

您可以使用LIKE运算符并指定执行查询的模式,如下所示:

SELECT mydata FROM mytable
WHERE(mydata LIKE 'ABCD [1-9]' OR mydata LIKE 'ABCD 1[0-9]' OR mydata LIKE 'ABCD 20') 
AND mydata NOT LIKE 'ABCD [4-8]';

或更简洁,更短的内容:

SELECT mydata FROM mytable
where mydata like 'ABCD [^4-8]%';

查看this SQL Fiddle

答案 1 :(得分:1)

你可以在SQL Server中像这样使用:

where col like 'ABCD [1-9]' or
      col like 'ABCD 1[0-9]' or
      col like 'ABCD 20'

答案 2 :(得分:0)

select * from tablename
where cast(replace(somecolumn, 'ABCD','') as numeric) < 4
and cast(replace(somecolumn, 'ABCD','') as numeric) > 8