3
我有一個函數,我需要創建它讀取表中的列的值,並將文本值輸出到同一個表中的新列。問題列(confidence_score)將具有數字值,字母或空值。創建一個讀取值和輸出字的函數
如果confidence_score(nvarchar(2))是一個數字並且小於或等於14,我需要計算列中有'高',否則'低'。如果confidence_score不是數字並且值爲'H',我需要計算列中有'高',否則'低'。
這裏是我使用的代碼:
使用此代碼對了一半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)似乎工作正常。當數值不是數字時,我正在獲得高值和低值。這個問題似乎在isnumeric是真正的部分。無論在confidence_score列中實際存在什麼數值,我都會獲得「高」值。我不確定我在這裏做錯了什麼。
我感謝任何人都可以提供的幫助。
謝謝。
我自己埋在厚厚的代碼,甚至沒有注意到這一點。非常感謝你。這工作。 – user1742469