2016-09-29 39 views
2

只是好奇的是沒有任何簡單的方法來篩選某些串出,而不是使用下面的方法:T-SQL檢查字符串模式

例如:AccountNumber屬性,這應該允許正好10位數字作爲值,等,

所以對於查詢我做出這樣的:

@input like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' 

我只是想知道有沒有寫這個查詢的任何替代方法?對於那些需要精確100位數的值,沒有人想在粘貼[0-9]時進行計數,對吧?我注意到在C#中有類似^(\ d {10})$的東西,但我在TSQL中找不到這樣的匹配方法,這種類似的方法存在嗎?

回答

1

你可以使用

@input like REPLICATE('[0-9]',10) COLLATE Latin1_General_100_BIN2 

顯式分頁條款是因爲在某些排序規則的範圍內將匹配things that aren't strictly digits.

5

你的邏輯很好。你也可以這樣寫:

where len(AccountNumber) = 10 and AccountNumber not like '%[^0-9]%' 

也就是說,長度是10,它不包含任何不是數字的字符。