这是我要查询案例结构的查询:
SELECT TOP 1 CASE 130
WHEN '000000000000000' THEN '0'
WHEN '' THEN '0'
WHEN 'XXX' THEN '0'
WHEN 'RETIRED' THEN '0'
WHEN 'STUDENT' THEN '0'
ELSE '1'
END AS employed_flag
INTO #employedbeta
FROM CreditBureau.Experian
我只是想创建一个新的临时表,但我希望我的案子能首先工作。我不断收到错误消息:
将varchar值“ XXX”转换为数据类型int时转换失败。
在数据库中,列130是一个字符,我不知道为什么它认为我想将其设为数字。 SQL Server Management Studio,如果有关系的话。 列名是130,由于我在这里重写了该列,所以我将其保留为“ 1”,但是无论实际查询如何,我都会收到错误消息。
答案 0 :(得分:3)
130
是整数文字。如果这确实是列名,则必须使用双引号将其转义。附带说明一下,您可能也应该在else
分支中返回相同的类型(char):
CASE "130"
WHEN '000000000000000' THEN '0'
WHEN '' THEN '0'
WHEN 'XXX' THEN '0'
WHEN 'RETIRED' THEN '0'
WHEN 'STUDENT' THEN '0'
ELSE '1'
END AS employed_flag
答案 1 :(得分:0)
130
是一个非常糟糕的列名。但是,我将逻辑简化为:
SELECT TOP 1 (CASE WHEN [130] IN ('000000000000000', '', 'XXX', 'RETIRED', 'STUDENT')
THEN 0 ELSE 1
END) AS employed_flag
INTO #employedbeta
FROM CreditBureau.Experian;
请注意,我还将employed_flag
更改为数字值而不是字符串。这对我来说更有意义。