700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > tsql 正则_T-SQL中的SQL Server正则表达式

tsql 正则_T-SQL中的SQL Server正则表达式

时间:2019-11-08 01:16:26

相关推荐

tsql 正则_T-SQL中的SQL Server正则表达式

如果有人对将正则表达式与CLR一起使用感兴趣,那么这里是一个解决方案。下面的函数(C#.net 4.5)如果模式匹配则返回1,如果模式不匹配则返回0。我用它来标记子查询中的行。SQLfunction属性告诉sql server,此方法是SQL Server将使用的实际UDF。将文件另存为dll,放在可以从Management Studio访问的位置。

// 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中通过可编程性导入dll文件-程序集-新程序集

然后运行以下查询:

CREATE FUNCTION RegexContain(@text NVARCHAR(50), @pattern NVARCHAR(50))

RETURNS smallint

AS

EXTERNAL NAME CLR_Functions.[CLR_Functions.myFunctions].RegexContain

然后,您应该可以通过存储程序集的数据库完全访问该功能。

然后在这样的查询中使用:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。