Mar*_*k S 1 sql t-sql sql-server case sql-server-2012
我有一些麻烦了CASE
的说法,从转换的值时,我得到一个错误VARCHAR
来INT
.我知道这是由于优先约束,并修复我需要CONVERT/CAST
我的一个值,我很难找出要转换的内容.
这个原始的帖子把我推向了正确的方向,只是敲打着我的脑袋想出来.
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 )
Run Code Online (Sandbox Code Playgroud)
错误:
消息245,级别16,状态1,行1
转换将varchar值'N'转换为数据类型int时失败.
任何帮助将不胜感激.
这与此无关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
Run Code Online (Sandbox Code Playgroud)
虽然,从错误消息的实质,我猜这VARCHARField
实际上存储为数值.
归档时间: |
|
查看次数: |
179 次 |
最近记录: |