值存储在varchar中。我尝试检查值是否为数字然后转换为十进制,否则返回原始值。 如果我注释掉第二部分,第一个案例本身就可以正常工作。
CASE WHEN ISNUMERIC(Num) = 1 THEN CONVERT(DECIMAL(7,2),CONVERT(FLOAT, Num))
WHEN ISNUMERIC(Num) = 0 THEN Num END,
答案 0 :(得分:1)
问题是你要返回不同的类型。您需要将返回值转换为相同类型以进行安全查询。将小数转换回varchar,或者当num不是数字时返回0。