首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server案例转换失败

Server案例转换失败
EN

Stack Overflow用户
提问于 2013-12-30 14:42:32
回答 1查看 194关注 0票数 1

CASE语句有一些问题,因为当将值从VARCHAR转换为INT时会出现错误。我知道这是由于优先级约束和修复我需要CONVERT/CAST我的一个值,我有困难找出哪一个转换。

这个original post把我推到了正确的方向,只是猛敲我的头,想弄清楚。

代码语言:javascript
复制
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时,转换失败。

如能提供任何协助,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-12-30 14:47:16

这与case无关。这是比较。您需要将字符字段与整数进行比较。也许你的意思是:

代码语言:javascript
复制
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实际上是作为一个数值存储的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20841724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档