T-SQL检查字符串模式

时间:2016-09-29 21:12:52

标签: sql-server tsql

很奇怪,有什么简单的方法来过滤某些字符串而不是使用以下方法:

示例:对于AccountNumber属性,应该允许恰好10位数作为值,例如0123456789

因此对于我所做的查询:

@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中找不到这样的匹配方法,是否存在类似的方法?

2 个答案:

答案 0 :(得分:5)

你的逻辑很好。你也可以这样写:

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

即,长度为10,不包含任何不是数字的字符。

答案 1 :(得分:1)

您可以使用

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

显式collat​​e子句是因为在某些排序规则中,范围将匹配things that aren't strictly digits.