检查无效值 sql
checking for invalid values sql
我有一个存储过程,我有一个条件来检查 where 子句中的评级代码是 1,2 还是 3。像这样:
WHERE
CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3) AND
有时当 RatingCode 列中存在错误值时,上面的行会引发错误。因此我想出了以下解决方案:
WHERE
CASE WHEN ISNUMERIC(LEFT(RatingCode, 1)) = 1
THEN CASE WHEN CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3)
THEN 1
ELSE 0
END
ELSE 0
END = 1 AND
在这里,如果 RatingCode 列中有无效值(非数字),那么我想忽略该记录。我的上述解决方案好吗?或者有什么更好的解决办法吗?
在那种特定情况下,您也可以只使用
WHERE
LEFT(RatingCode, 1) IN ('1','2','3') AND
除此之外,tsql
.
中也允许进行字符串比较
WHERE
LEFT(RatingCode, 1) BETWEEN '1' AND '3' AND
这不会引发非数字字母的错误。
我有一个存储过程,我有一个条件来检查 where 子句中的评级代码是 1,2 还是 3。像这样:
WHERE
CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3) AND
有时当 RatingCode 列中存在错误值时,上面的行会引发错误。因此我想出了以下解决方案:
WHERE
CASE WHEN ISNUMERIC(LEFT(RatingCode, 1)) = 1
THEN CASE WHEN CONVERT(INT, LEFT(RatingCode, 1)) IN (1,2,3)
THEN 1
ELSE 0
END
ELSE 0
END = 1 AND
在这里,如果 RatingCode 列中有无效值(非数字),那么我想忽略该记录。我的上述解决方案好吗?或者有什么更好的解决办法吗?
在那种特定情况下,您也可以只使用
WHERE
LEFT(RatingCode, 1) IN ('1','2','3') AND
除此之外,tsql
.
WHERE
LEFT(RatingCode, 1) BETWEEN '1' AND '3' AND
这不会引发非数字字母的错误。