sql - 在 case 语句中将 varchar 转换为 int

标签 sql sql-server-2012

我正在尝试使用 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 表达式,所有值必须具有相同类型。您收到错误是因为您混合了两种类型作为可能的结果:INTVARCHAR

假设 DistIDINT,您可以执行以下操作:

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/

相关文章:

java - 何时使用 Hibernate 缓存(二级)?

c# - 如何安装 Microsoft.SqlServer.Management.SqlParser?

sql - TRY_CONVERT在SQL Server 2012上失败

visual-studio-2010 - 发布 SQL Data Tools 2012 项目 : Forces into Single User Mode

ssis - 在 SQL Server 2012 上运行 DTS 包

mysql - 在使用自动增量的 MySQL 中清理表

SQL 按连续行的 session 对行进行排名

php - mysql_last_id() 的竞争条件

sql-server - ALTER ROLE 删除所有成员

sql - 如果在稍后在事务中不使用的 CTE 内执行,为什么 SELECT...FOR UPDATE 不起作用?