SQL Server中T-SQL能否用LIKE量词简化格式校验的正则写法?
T-SQL中LIKE运算符是否支持模式量化语法?
答案是不行,T-SQL的LIKE运算符不支持{n}这种模式量化写法,直接写WHERE Column LIKE '[A-Z]{2}[1-9]{6}'会把{2}和{6}当成普通字符去匹配,根本达不到你要的“2个大写字母+6位数字”的校验效果。
可行的替代方案
- 方案1:重复字符组+长度校验
这是兼容所有SQL Server版本的写法,用重复字符组定义格式,再加上长度校验确保输入刚好是8位:
WHERE Column LIKE '[A-Z][A-Z][1-9][1-9][1-9][1-9][1-9][1-9]' AND LEN(Column) = 8
- 方案2:使用REGEXP_LIKE(SQL Server 2016及以上)
从SQL Server 2016开始,官方引入了REGEXP_LIKE函数,支持标准正则表达式的模式量化语法,你可以直接这样写:
WHERE REGEXP_LIKE(Column, '^[A-Z]{2}[1-9]{6}$')
这里的^表示字符串开头,$表示字符串结尾,确保整个输入完全符合格式要求。
内容的提问来源于stack exchange,提问作者Merlin Nestler
相关产品推荐
相关产品推荐

