有没有办法在SQL Server查询中编写正则表达式?



我正在SQL服务器上运行查询。我需要获取LoginName以给定字符串开头并以整数结尾的记录。我正在运行以下查询,但它没有返回任何记录。让我知道这在 SQL 中是否不可能,所以我将在 C# 代码中处理。

SELECT * from TestTable where LoginName like 'Input[0-9]*%'

期望值:

Input
Input1
Input123

非预期值:

Inputabc
abc
<empty string>
abcInput

有没有办法在SQL Server查询中编写正则表达式?

仅通过使用 CLR。没有对正则表达式的本机支持。LIKEPATINDEX支持非常有限的模式匹配方言。

尽管如此,这足以获得字符串"Input"LoginName后跟任意数量的数字(包括零位)然后是字符串末尾的行。

如下(DBFiddle 链接)

SELECT *
FROM   TestTable
WHERE  LoginName LIKE 'Input%'
AND SUBSTRING(LoginName, LEN('Input') + 1, 8000) NOT LIKE '%[^0-9]%'
  • LoginName LIKE 'Input%'- 登录名以"输入"开头
  • SUBSTRING(LoginName, LEN('Input') + 1, 8000) NOT LIKE '%[^0-9]%'- "输入"后面的子字符串不包含不在范围内的字符0-9

如果更改要从中搜索的字符串Input请记住更新查询中的两个实例。

最新更新