首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与MySql Regex函数类似的SQL REGEX函数。

与MySql Regex函数类似的SQL REGEX函数。
EN

Stack Overflow用户
提问于 2009-06-08 13:54:27
回答 4查看 2.4K关注 0票数 2

我正在寻找一个函数,将能够做与TSQL函数的MySQL相同的事情。基本上,我需要我的查询看起来像下面这样:

代码语言:javascript
运行
复制
SELECT * FROM Routing WHERE (@Message REGEX RouteRegex);

在这一点上我并不热衷于使用CLR。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-08 14:05:21

此链接是一篇关于通过服务器上的VBScript.Regex库编写正则表达式的文章:http://www.sqlteam.com/article/regular-expressions-in-t-sql

它通过OLE Automation与Regex库通信,默认情况下该库处于关闭状态,因为它存在安全风险。

我的意见是使用Regex via the CLR

票数 1
EN

Stack Overflow用户

发布于 2009-06-08 14:11:58

LFSR关于CLR的说法是正确的。Go for CLR,但下面的函数也运行得很好。当LFSR发布上面的答案时,我正在测试代码。

代码语言:javascript
运行
复制
CREATE FUNCTION dbo.find_regular_expression
(
    @source varchar(5000),
    @regexp varchar(1000),
    @ignorecase bit = 0
)
RETURNS bit
AS
BEGIN
    DECLARE @hr integer
    DECLARE @objRegExp integer
    DECLARE @objMatches integer
    DECLARE @objMatch integer
    DECLARE @count integer
    DECLARE @results bit

    EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END 
    EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END
    EXEC @hr = sp_OADestroy @objRegExp
    IF @hr <> 0 BEGIN
        SET @results = 0
        RETURN @results
    END
RETURN @results
END
票数 1
EN

Stack Overflow用户

发布于 2009-06-08 14:15:35

我认为PATINDEX是最接近原生t-sql的。

http://msdn.microsoft.com/en-us/library/ms188395.aspx

另请参阅

http://msdn.microsoft.com/en-us/library/ms187489.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/965026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档