私は実際には 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 関数のように配列/リスト/テーブルを使用する方法は?