【问题标题】:Conversion failed when converting the varchar value ':' to data type int将 varchar 值 ':' 转换为数据类型 int 时转换失败
【发布时间】:2016-09-22 17:34:18
【问题描述】:

我不明白我在这里做错了什么

Test:

Id  |   Roll    |   
-------------------------   
1   |   145 |   


select Id + ':' + roll from test

【问题讨论】:

  • 在 SQL Server 中,+ 表示为所有 int 字段添加,它会尝试将任何文本转换为值(在您的情况下为 ':')。这意味着如果您的 IdRoll 是 int,您需要先将其转换为文本
  • 在连接之前将整数值转换为 char。

标签: sql sql-server-2008


【解决方案1】:

这在cmets中已经回答了,但是为了完成,你可以在下面做

select cast(Id as varchar(1)) + ':' + cast(roll  as varchar(10)) from test

【讨论】:

    【解决方案2】:

    为了完整起见:

    使用 SQL Server 2012 及更高版本的人可以使用CONCAT 来实现相同的目标,而无需任何显式转换。

    SELECT CONCAT(15, ':', 10);
    

    也会导致:

    15:10
    

    作为一个额外的好处,CONCAT 将本机处理任何 NULL 值,而不是完全杀死您的结果。

    SELECT CONCAT('Oh snap, there might be a NULL value', NULL, ' somewhere in here!', 11, '!!');
    

    结果:

    Oh snap, there might be a NULL value somewhere in here!11!!
    

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多