我有一个需要创建的函数,它读取表中列的值并将文本值输出到同一表中的新列中。有问题的列 (confidence_score) 将具有数值、字母或空值。
如果 confidence_score(nvarchar(2)) 是一个数字并且小于或等于 14,我需要计算列中包含“高”,否则为“低”。如果 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)似乎工作正常。当值不是数字时,我得到了我期望的高值和低值。这个问题似乎在数字为真部分。无论 confidence_score 列中的实际数值是多少,我都会得到一个“高”值。我不确定我在这里做错了什么。
我感谢任何人可以提供的任何帮助。
谢谢你。