sqlserver模式匹配特定变量

时间:2013-05-06 01:23:19

标签: sql-server

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

以下条件 -

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

    中实现这个正则表达式逻辑
    '/^[a-zA-Z][a-zA-Z0-9_]*$/
    

    我相信这会有用

    即;

    从table_1中选择var_1 var_1与[a-z]类似,但不确定如何实现所有逻辑

1 个答案:

答案 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模式没有前缀为%的事实中。

参考:LIKE (Transact-SQL)


对于RegEx / ^ [a-zA-Z] [a-zA-Z0-9 _] * $ /:

使用T I注释中的模式,即

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

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