テーブル内の列の値を読み取り、同じテーブル内の新しい列にテキスト値を出力する関数を作成する必要があります。問題の列(confidence_score)には、数値、文字、またはnull値のいずれかが含まれます。
confidence_score(nvarchar(2))が数値で、14以下の場合、計算列に「High」を含める必要があります。それ以外の場合は「Low」を含める必要があります。confidence_scoreが数値ではなく、値が「H」の場合、計算列に「High」が含まれている必要があります。それ以外の場合は「Low」が含まれています。
これが私が使用しているコードです:
CREATE FUNCTION dbo.avm_confidence_level(@score nvarchar)
RETURNS nvarchar(5) as
BEGIN
DECLARE @conversion as nvarchar(5)
IF isnumeric(@score) = 1 BEGIN
IF cast(@score as int) <= 14 BEGIN
Set @conversion = 'High'
END
ELSE BEGIN
Set @conversion = 'Low'
END
END
ELSE BEGIN
IF @score = 'H' BEGIN
Set @conversion = 'High'
END
ELSE BEGIN
Set @conversion = 'Low'
END
END
RETURN @conversion
END
このコードを使用して、半分正しい結果が得られています。最初のチェック(isnumeric)は正常に機能しているようです。値が数値でない場合に期待している高値と低値を取得しています。問題は、isnumericbeingtrueセクション内にあるようです。実際にconfidence_score列にある数値に関係なく、「High」の値を取得しています。ここで何が間違っているのかわかりません。
私は誰もが提供できるどんな助けにも感謝します。
ありがとうございました。