5

正規表現マッチングを行うための非常に単純な CLR 関数があります

public static SqlBoolean RegExMatch(SqlString input, SqlString pattern)
{
    if (input.IsNull || pattern.IsNull)
        return SqlBoolean.False;

    return Regex.IsMatch(input.Value, pattern.Value, RegexOptions.IgnoreCase);
}

SQL ステートメントのようなものを書くことができます。

SELECT * FROM dbo.table1 WHERE dbo.RegexMatch(column1, '[0-9][A-Z]') = 1
-- match entries in col1 like 1A, 2B etc...

そのクエリを次のように再構築するのがいいと思っているだけです。

SELECT * FROM dbo.table1 WHERE column1 REGEXLIKE '[0-9][A-Z]'

CLR コードを使用して新しい比較演算子を作成することは可能ですか。(ウェブをざっと見たところ、答えはNOであると推測していますが、尋ねても害はありません)

4

2 に答える 2

6

いいえ、あなたがすることはできません。関数、ストアド プロシージャ、トリガーなどを作成できますが、新しい T-SQL 演算子やコマンドを作成する手段はありません。私が知る限り、SQL Server 2008R2 にもありません。

于 2010-04-06T08:07:39.237 に答える
0

このリンクでは、SQLCLR で演算子を宣言する方法を確認できます: http://msftengprodsamples.codeplex.com/wikipage?title=SS2008!User-Defined%20Data%20Type%20(UDT)%20Sample&referringTitle=Home

例えば:

    public static SqlBoolean operator ==(ComplexNumber c1, ComplexNumber c2)
    {
        return c1.Equals(c2);
    }
于 2015-01-07T16:50:29.317 に答える