SQL 服务器中的数字范围通配符
Wildcard of Number Ranges in SQL Server
sql 服务器中的模式匹配不像正则表达式那样工作。是否可以使用 LIKE 来匹配数字范围?我需要做这样的事情:
ABCD 1
ABCD 2
ABCD 3
ABCD 4
ABCD 8
ABCD 9
ABCD 10
...
ABCD 20
我想 select 从 "ABCD 1" 到 "ABCD 20" 的所有数据。但我想忽略 "ABCD 4" 和 "ABCD 8" 之间的任何内容。当然我可以做OR条件,但我只是想看看有没有更优雅的方式。
TIA。
select * from tablename
where cast(replace(somecolumn, 'ABCD','') as numeric) < 4
and cast(replace(somecolumn, 'ABCD','') as numeric) > 8
您可以在 SQL 服务器中像这样使用:
where col like 'ABCD [1-9]' or
col like 'ABCD 1[0-9]' or
col like 'ABCD 20'
您可以使用 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]%';
sql 服务器中的模式匹配不像正则表达式那样工作。是否可以使用 LIKE 来匹配数字范围?我需要做这样的事情:
ABCD 1
ABCD 2
ABCD 3
ABCD 4
ABCD 8
ABCD 9
ABCD 10
...
ABCD 20
我想 select 从 "ABCD 1" 到 "ABCD 20" 的所有数据。但我想忽略 "ABCD 4" 和 "ABCD 8" 之间的任何内容。当然我可以做OR条件,但我只是想看看有没有更优雅的方式。
TIA。
select * from tablename
where cast(replace(somecolumn, 'ABCD','') as numeric) < 4
and cast(replace(somecolumn, 'ABCD','') as numeric) > 8
您可以在 SQL 服务器中像这样使用:
where col like 'ABCD [1-9]' or
col like 'ABCD 1[0-9]' or
col like 'ABCD 20'
您可以使用 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]%';