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

C# 有没有办法在SQL Server查询中写入正则表达式?,c#,sql-server,C#,Sql Server,我正在SQL server上运行查询。我需要获取LoginName以给定字符串开头,以整数结尾的记录。我正在运行下面的查询,但它不返回任何记录。如果这在SQL中不可能,请告诉我,这样我将用C#代码处理 期望值: Input Input1 Input123 Inputabc abc <empty string> abcInput 非预期值: Input Input1 Input123 Inputabc abc <empty string> abcInput Inpu

我正在SQL server上运行查询。我需要获取
LoginName
以给定字符串开头,以整数结尾的记录。我正在运行下面的查询,但它不返回任何记录。如果这在SQL中不可能,请告诉我,这样我将用C#代码处理

期望值:

Input
Input1
Input123
Inputabc
abc
<empty string>
abcInput
非预期值:

Input
Input1
Input123
Inputabc
abc
<empty string>
abcInput
Inputabc
abc
阿宾普特
有没有办法在SQL Server查询中写入正则表达式

仅通过使用CLR。regex没有本机支持
LIKE
PATINDEX
支持非常有限的模式匹配方言

尽管如此,这足以获取
LoginName
为字符串“输入”后跟任意位数(包括零位数)的行,然后是字符串的结尾

如下面()

  • LoginName类似于“Input%”
    -LoginName以“Input”开头
  • 子字符串(LoginName,LEN('Input')+1,8000)与“[^0-9]%”不同
    -“Input”后面的子字符串不包含不在范围
    0-9
如果将字符串更改为搜索from
Input
,请记住在查询中更新这两个实例

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

仅通过使用CLR。regex没有本机支持
LIKE
PATINDEX
支持非常有限的模式匹配方言

尽管如此,这足以获取
LoginName
为字符串“输入”后跟任意位数(包括零位数)的行,然后是字符串的结尾

如下面()

  • LoginName类似于“Input%”
    -LoginName以“Input”开头
  • 子字符串(LoginName,LEN('Input')+1,8000)与“[^0-9]%”不同
    -“Input”后面的子字符串不包含不在范围
    0-9

如果将字符串更改为搜索from
Input
,请记住在查询中更新这两个实例

SQL Server仅支持基本模式匹配。如果您需要真正的正则表达式支持,您需要查看CLR函数。至于为什么没有行,那是因为它们都不是以
'Input'
开头,后跟一个数字,后跟一个星号(
*
)。预期结果中没有一个包含
“*”
。似乎您实际上只想
像'Input[0-9]'
@Larnu-
*
在正则表达式语法中表示“匹配零到无限次”。因此,在TSQL模式中无效,但正如我提到的@MartinSmith,T-SQL不支持正则表达式,并且像
一样将
*
视为一个文本。这就是为什么没有行的原因,正如我所说的。是的-我并不是说你认为
*
可以工作,但是你建议的
输入[0-9]
并不等效,因为这意味着“至少一次”SQL Server只支持基本的模式匹配。如果您需要真正的正则表达式支持,您需要查看CLR函数。至于为什么没有行,那是因为它们都不是以
'Input'
开头,后跟一个数字,后跟一个星号(
*
)。预期结果中没有一个包含
“*”
。似乎您实际上只想
像'Input[0-9]'
@Larnu-
*
在正则表达式语法中表示“匹配零到无限次”。因此,在TSQL模式中无效,但正如我提到的@MartinSmith,T-SQL不支持正则表达式,并且像
一样将
*
视为一个文本。这就是为什么没有行的原因,正如我所说的。是的-我不是说你认为
*
可以工作,但是你建议的
输入[0-9]
并不等同,因为这意味着“至少一次”让我们来吧。让我们来吧。