我使用了一个列在case表达式中,并且在server1上运行良好。但是当我在server2上运行时,由于该列的值为'false',因此失败了。
这个列是一个varchar(255),但是在我的case表达式中,我将其用作INT类型使用。尽管它之前工作得很好,但现在它在server2上由于'false'的值而失败了。
我如何安全地转换为INT,并且如果转换失败,则默认为0?
这是否有可能实现?
我的查询看起来像:
这个列是一个varchar(255),但是在我的case表达式中,我将其用作INT类型使用。尽管它之前工作得很好,但现在它在server2上由于'false'的值而失败了。
我如何安全地转换为INT,并且如果转换失败,则默认为0?
这是否有可能实现?
我的查询看起来像:
UPDATE t1
set
c1 = ISNULL(
(
SELECT CASE c2
WHEN 123 then 'hello'
WHEN 234 then 'bye'
ELSE ''
END
)
, '')
FROM table1 as t1
SELECT CASE
语句语法不正确。你需要移除SELECT
,并在CASE
后(在WHEN
之前)添加一个表达式,或者用布尔表达式替换你的123/234。 - Julien Blanchard