簡體   English   中英

SQL Server中的數字范圍的通配符

[英]Wildcard of Number Ranges in SQL Server

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。

您可以使用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小提琴

你可以在SQL Server中使用像這樣:

where col like 'ABCD [1-9]' or
      col like 'ABCD 1[0-9]' or
      col like 'ABCD 20'
select * from tablename
where cast(replace(somecolumn, 'ABCD','') as numeric) < 4
and cast(replace(somecolumn, 'ABCD','') as numeric) > 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM