使用 c# 托管代码提取 sql 字符串
Posted
技术标签:
【中文标题】使用 c# 托管代码提取 sql 字符串【英文标题】:sql string extraction using c# managed code 【发布时间】:2017-09-05 17:08:02 【问题描述】:我在 SQL Server DB 项目中有 2 个函数。
GetCatalogueNo
在函数中编写了正则表达式模式。
[SqlFunction]
public static SqlString GetCatalogueNo(string originalString)
Regex r1 = new Regex("\\d7|\\d3/\\d4");
return r1.Match(originalString).Groups[0].Value;
在ExtractText
中,我将正则表达式模式作为参数传递。
[SqlFunction]
public static SqlString ExtractText(string originalString, string pattern)
Regex r1 = new Regex(pattern);
return r1.Match(originalString).Groups[0].Value;
SQL Server 上的编译代码适用于:GetCatalogueNo
SELECT dbo.GetCatalogueNo('xxxxx xxxxxxxxxx 9999999 xxxxxxx xxxxxxx .....')
返回:9999999
在 SQL Server 上编译的代码不返回任何内容:ExtractText
SELECT dbo.[ExtractText] ('xxxxx xxxxxxxxxx 9999999 xxxxxxx xxxxxxx .....', '\\d7|\\d3/\\d4')
我想知道dbo.[ExtractText]
中的第二个参数是如何传递的以及缺少什么。
【问题讨论】:
【参考方案1】:取得了相同的结果。是转义字符 \ 导致了问题。
SELECT dbo.[ExtractText] ('xxxxx xxxxxxxxxx 9999999 xxxxxxx xxxxxxx .....', '\d7|\d3/\d4') 返回与 GetCatalogueNo 相同的结果。
【讨论】:
以上是关于使用 c# 托管代码提取 sql 字符串的主要内容,如果未能解决你的问题,请参考以下文章