我正在尝试使用 case 语句将 1,2...5 转换为 Main.District 1,Main.District 2...Main.District 5。
这是我到目前为止所拥有的:
CASE
WHEN Pubworks.dbo.csc.DistID = 1 THEN
'MAINT. DISTRICT 1'
WHEN Pubworks.dbo.csc.DistID = 2 THEN
'MAINT. DISTRICT 2'
......
WHEN Pubworks.dbo.csc.DistID = 5 THEN
'MAINT. DISTRICT 5'
ELSE
Pubworks.dbo.csc.DistID
end
as District
如何将 varchar 值转换为 int 数据类型? 先感谢您!
最佳答案
对于 CASE
表达式,所有值必须具有相同类型。您收到错误是因为您混合了两种类型作为可能的结果:INT
和 VARCHAR
。
假设 DistID
是 INT
,您可以执行以下操作:
Case
When Pubworks.dbo.csc.DistID In (1, 2, 3, 4, 5)
Then Concat('MAINT. DISTRICT ', Pubworks.dbo.csc.DistID)
Else
Convert(Varchar, Pubworks.dbo.csc.DistID)
End As District
假设它是 VARCHAR
,您可以这样做:
Case
When Pubworks.dbo.csc.DistID In ('1', '2', '3', '4', '5')
Then Concat('MAINT. DISTRICT ', Pubworks.dbo.csc.DistID)
Else
Pubworks.dbo.csc.DistID
End As District
关于sql - 在 case 语句中将 varchar 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45675719/