条件数据类型转换| SQL服务器

时间:2018-08-06 12:59:05

标签: sql-server-2008

我正在尝试创建一个简单的case语句,该语句将更新现有的 Total 列,该列的数值为:

如果总计小于2,则为“ A_1”;如果其他值小于

,则为“ B_2”
UPDATE BASE_V1
SET TOTAL=
(CASE
WHEN TOTAL<2 THEN 'A_1'
ELSE 'B_2'
END
)

Error: Conversion failed when converting the varchar value 'B_2' to data type int

我尝试使用convert函数更改数据类型,但是不起作用

UPDATE BASE_V1
SET TOTAL=
(CASE
WHEN TOTAL<2 THEN CONVERT(VARCHAR(10),'A_1')
ELSE CONVERT(VARCHAR(10),'B_2')
END
)

1 个答案:

答案 0 :(得分:0)

如果Total是varchar列,则需要将其与字符串进行比较:

UPDATE BASE_V1
SET TOTAL=
(CASE
WHEN TOTAL<'2' THEN 'A_1'
ELSE 'B_2'
END
)

TOTAL<2强制SQL尝试将Total的所有值隐式转换为整数。将2用单引号引起来可以进行字符串比较。