我正在SQL服务器上运行查询。我需要获取LoginName
以给定字符串开头并以整数结尾的记录。我正在运行以下查询,但它没有返回任何记录。让我知道这在 SQL 中是否不可能,所以我将在 C# 代码中处理。
SELECT * from TestTable where LoginName like 'Input[0-9]*%'
期望值:
Input
Input1
Input123
非预期值:
Inputabc
abc
<empty string>
abcInput
有没有办法在SQL Server查询中编写正则表达式?
仅通过使用 CLR。没有对正则表达式的本机支持。LIKE
和PATINDEX
支持非常有限的模式匹配方言。
尽管如此,这足以获得字符串"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
请记住更新查询中的两个实例。