0

私は実際には SQL の関数が苦手です。私は Java/Android プログラマーです。しかし、学校のプロジェクトでは、文字列が T-SQL の配列に含まれているかどうかを確認する必要があります。しかし、私は 2 つの異なる会社のデータを比較していますが、どちらもデータにいくつかの欠陥があります。ある会社のデータはデータベースにあり、もう 1 つは Excel にあります。

もちろん、これを行う1つの方法は、SQLのLIKE関数を使用することですが、基準が何であるかはよくわかりません。完璧なのはSQL関数INのような関数ですが、それには完全に一致する必要があります...

だから私がしたことは次のとおりです:

レーベンシュタイン距離を与える T-SQL 関数を作成し、2 つの文字列を比較してレーベンシュタイン距離を与えます。

この機能はうまく機能します。

次のステップは、次のパラメーターを使用して関数を作成することです。

  • 入力文字列 - チェックする文字列
  • levdist int - 一致させるための最小レーベンシュタイン距離
    (完全な一致は 0 になります)
  • arr array/table/llist (カンマで区切られた文字列 (IN 関数に入れるなど) がどのように呼び出されるかを見つけることができません - どこを確認するか

私がこれまでに持っているのはこれです:

    CREATE FUNCTION inArrayWithLevenstheinDist 
(
    -- Add the parameters for the function here
    @stringToCheck varchar,
    @levDist int,
    @arr TABLE ??? 
)
RETURNS Boolean
AS
BEGIN
    -- Declare the return variable here
    DECLARE @Result bool
    SET @Result = FALSE

    -- Add the T-SQL statements to compute the return value here
    DECLARE @intFlag INT
    SET @intFlag = 1
    WHILE (@intFlag <=5)
    BEGIN
    IF [100].dbo.LEVENSTEINDIST(@stringToCheck,arr(@intFlag) < @levDist
    SET @Result = TRUE
    END //end if 


    SET @intFlag = @intFlag + 1
    IF @intFlag = arr.size ??????
    BREAK;
    END //end while
    GO





    -- Return the result of the function
    RETURN @Result

END //end function
GO

これは機能せず、コンパイル エラーが発生します。だから私の2つの質問は(私のコードが間違っていると思うものです)

  • 関数でブール値を返す方法(見つけられない:S)? もちろん、整数を返し、falseの場合は0、trueの場合は1などを使用できますが、可能である必要があります

  • 標準の T-SQL IN 関数のように配列/リスト/テーブルを使用する方法は?

4

0 に答える 0