SQL Server中的正则表达式似乎不像往常一样工作

时间:2018-01-17 15:51:52

标签: sql-server regex

select * from MyTable where MyColumn LIKE '[D][0-9]%' 

匹配一行MyColumn = 'D12345'(显然),但

select * from MyTable where MyColumn LIKE '[D]?[0-9]*%'

没有按'吨。为什么?我该怎么办?

2 个答案:

答案 0 :(得分:2)

正如JNevill目前所指出的那样LIKE 并不支持完整的正则表达式,而且即使 T-SQL也不支持regexp 。要在SQL Server中使用正则表达式,有两种方法:

1)使用User-Defined Function by using Common Language Run-time Integration 致电System.Text.RegularExpressions。自SQL Server 2005

以来,这种方法得到了支持

2)在SQL Server 2016及更高版本中,使用sp_execute_external_script调用Regular Expressions with the R Language。在SQL Server 2017中,您可以以相同的方式调用python脚本

答案 1 :(得分:1)

使用PatIndex

SELECT * FROM YourTable WHERE PATINDEX('%[a-z][0-9]%',ColumnName)>0