2

我需要使用 sqlserver 实现模式匹配...

这些是以下条件-

  1. 单词的第一个字母应以字符开头。2.可以是大写或小写 3.第一个字符后面的字符可以是数字 1-9 或任何有效字符或下划线..

基本上我需要在sqlserver中实现这个正则表达式逻辑

'/^[a-zA-Z][a-zA-Z0-9_]*$/

我相信这会奏效

IE;

select var_1 from table_1 where var_1 like [az] 但不确定是否可以实现所有逻辑

4

1 回答 1

4

对于正则表达式 /^[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

IE

select var_1 from table_1 where var_1 like '[a-Z][a-Z0-9_]%'

仅供参考,除非您更改了默认值,否则大多数 SQL Server 数据库都不会区分大小写。因此,LIKE 范围 [az] 将包括所有字母,无论大写还是小写。单数字符 % 匹配零到任意数量的字符。

字符串的开头(^在 RegExp 中)是隐含的,因为 LIKE 模式没有以 % 为前缀。

参考:LIKE (Transact-SQL)


对于正则表达式 /^[a-zA-Z][a-zA-Z0-9_]*$/:

使用T I's 评论中的模式,即

WHERE var_1 LIKE '[a-Z]%' AND NOT var_1 LIKE '%[^a-Z0-9_]%'

第一部分确保第一个字符是字母;第二部分通过排除 ( ) 确保在任何位置(包括第一个),唯一有效的字符是字母数字或下划线^

于 2013-05-06T01:33:37.930 回答