CASE语句有一些问题,因为当将值从VARCHAR转换为INT时会出现错误。我知道这是由于优先级约束和修复我需要CONVERT/CAST我的一个值,我有困难找出哪一个转换。
这个original post把我推到了正确的方向,只是猛敲我的头,想弄清楚。
UPDATE Table1
SET IntField = ( CASE WHEN ( VARCHARField = 0
OR VARCHARField = 1
OR VARCHARField = 2
OR VARCHARField = 3
) THEN 0
WHEN ( VARCHARField = 4
OR VARCHARField = 5
OR VARCHARField = 6
OR VARCHARField = 7
) THEN 1
WHEN ( VARCHARField = 8
OR VARCHARField = 9
) THEN 2
WHEN ( VARCHARField = 'N' ) THEN 3
ELSE 0
END )错误:
Msg 245,第16级,状态1,第1行 将varchar值'N‘转换为数据类型int时,转换失败。
如能提供任何协助,将不胜感激。
发布于 2013-12-30 14:47:16
这与case无关。这是比较。您需要将字符字段与整数进行比较。也许你的意思是:
CASE
WHEN VARCHARField in ('0', '1', '2', '3') THEN 0
WHEN VARCHARField in ('4', '5', '6', '7') THEN 1
WHEN VARCHARField in ('8', '9') THEN 2
WHEN VARCHARField = 'N' THEN 3
ELSE 0
END尽管从错误消息的实质内容来看,我猜想VARCHARField实际上是作为一个数值存储的。
https://stackoverflow.com/questions/20841724
复制相似问题