我需要使用sqlserver实现模式匹配...
以下条件 -
基本上我需要在sqlserver
中实现这个正则表达式逻辑'/^[a-zA-Z][a-zA-Z0-9_]*$/
我相信这会有用
即;
从table_1中选择var_1 var_1与[a-z]类似,但不确定如何实现所有逻辑
答案 0 :(得分:4)
对于RegEx / ^ [a-zA-Z] [a-zA-Z0-9 _]。* $ /:
WHERE somecolumn LIKE '[a-Z][a-Z0-9_]%' -- column
WHERE @somecolumn LIKE '[a-Z][a-Z0-9_]%' -- variable
即
select var_1 from table_1 where var_1 like '[a-Z][a-Z0-9_]%'
仅供参考除非您更改了默认值,否则大多数SQL Server数据库都不会整理为区分大小写。因此,LIKE范围[a-z]将包括所有字母,大写或小写。单数字符%将ZERO与任意数量的字符匹配。
字符串的开头(RegExp中的^
)隐含在LIKE模式没有前缀为%的事实中。
对于RegEx / ^ [a-zA-Z] [a-zA-Z0-9 _] * $ /:
使用T I
注释中的模式,即
WHERE var_1 LIKE '[a-Z]%' AND NOT var_1 LIKE '%[^a-Z0-9_]%'
第一部分确保第一个字符是一个字母;第二部分确保在任何位置(包括第一部分),唯一有效的字符是字母数字或下划线,排除(^
)。