tsql 正则_T-SQL中的SQL Server正则表达式
如果有人對(duì)將正則表達(dá)式與CLR一起使用感興趣,那么這里是一個(gè)解決方案。下面的函數(shù)(C#.net 4.5)如果模式匹配則返回1,如果模式不匹配則返回0。我用它來(lái)標(biāo)記子查詢(xún)中的行。SQLfunction屬性告訴sql server,此方法是SQL Server將使用的實(shí)際UDF。將文件另存為dll,放在可以從Management Studio訪(fǎng)問(wèn)的位置。
// default using statements above
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
namespace CLR_Functions
{
public class myFunctions
{
[SqlFunction]
public static SqlInt16 RegexContain(SqlString text, SqlString pattern)
{
SqlInt16 returnVal = 0;
try
{
string myText = text.ToString();
string myPattern = pattern.ToString();
MatchCollection mc = Regex.Matches(myText, myPattern);
if (mc.Count > 0)
{
returnVal = 1;
}
}
catch
{
returnVal = 0;
}
return returnVal;
}
}
}
在Management Studio中通過(guò)可編程性導(dǎo)入dll文件-程序集-新程序集
然后運(yùn)行以下查詢(xún):
CREATE FUNCTION RegexContain(@text NVARCHAR(50), @pattern NVARCHAR(50))
RETURNS smallint
AS
EXTERNAL NAME CLR_Functions.[CLR_Functions.myFunctions].RegexContain
然后,您應(yīng)該可以通過(guò)存儲(chǔ)程序集的數(shù)據(jù)庫(kù)完全訪(fǎng)問(wèn)該功能。
然后在這樣的查詢(xún)中使用:
SELECT *
FROM
(
SELECT
DailyLog.Date,
DailyLog.Researcher,
DailyLog.team,
DailyLog.field,
DailyLog.EntityID,
DailyLog.[From],
DailyLog.[To],
dbo.RegexContain(Researcher, '[\p{L}\s]+') as 'is null values'
FROM [DailyOps].[dbo].[DailyLog]
) AS a
WHERE a.[is null values] = 0
總結(jié)
以上是生活随笔為你收集整理的tsql 正则_T-SQL中的SQL Server正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 家里为什么会出现蟑螂呢?
- 下一篇: php mysql source_详解M