2017-04-10 44 views
0

我在SQL Server數據庫項目中有2個函數。使用c#託管代碼提取sql字符串

GetCatalogueNo在函數中寫入了正則表達式模式。

[SqlFunction] 
public static SqlString GetCatalogueNo(string originalString) 
{ 
    Regex r1 = new Regex("\\d{7}|\\d{3}/\\d{4}");    

    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 .....', '\\d{7}|\\d{3}/\\d{4}') 

我想知道中的第二個參數通過,什麼是失蹤請。

回答

0

達到相同的結果。這是導致問題的轉義字符。 [ExtractText]('xxxxx xxxxxxxxxx 9999999 xxxxxxx xxxxxxx .....','\ d {7} | \ d {3}/\ d {4}')返回與GetCatalogueNo相同的結果。

相關問題