Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 转换varchar值时转换失败';:';到数据类型int_Sql_Sql Server 2008 - Fatal编程技术网

Sql 转换varchar值时转换失败';:';到数据类型int

Sql 转换varchar值时转换失败';:';到数据类型int,sql,sql-server-2008,Sql,Sql Server 2008,我不明白我做错了什么 测试: Id | Roll | ------------------------- 1 | 145 | select Id + ':' + roll from test 这已经在评论中得到了回答,但为了完成,您可以执行以下操作 select cast(Id as varchar(1)) + ':' + cast(roll as varchar(10)) from test 这已经在评论中得到了回答,但为了完成,您可以执行以下操

我不明白我做错了什么

测试

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


select Id + ':' + roll from test

这已经在评论中得到了回答,但为了完成,您可以执行以下操作

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

这已经在评论中得到了回答,但为了完成,您可以执行以下操作

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

为了完整起见:

使用SQL Server 2012及更高版本的用户可以使用来实现相同的功能,而无需进行任何显式转换

SELECT CONCAT(15, ':', 10);
还将导致:

15:10
作为一个额外的好处,CONCAT将以本机方式处理任何空值,而不是完全终止您的结果

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!!

为了完整起见:

使用SQL Server 2012及更高版本的用户可以使用来实现相同的功能,而无需进行任何显式转换

SELECT CONCAT(15, ':', 10);
还将导致:

15:10
作为一个额外的好处,CONCAT将以本机方式处理任何空值,而不是完全终止您的结果

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!!

在SQL Server中,
+
表示“为所有int字段添加”,它将尝试将任何文本转换为值(在您的示例中为“:”)。这意味着,如果您的
Id
Roll
为int,则需要将其转换为text,首先将整数值转换为char,然后再进行连接。在SQL Server中,
+
表示“为所有int字段添加”,它将尝试将任何文本转换为值(在您的示例中为“:”)。这意味着如果您的
Id
Roll
为int,则需要将其转换为text,首先将整数值转换为char,然后再进行连接。