Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 连接Tsql中的空值列_Sql Server_Tsql - Fatal编程技术网

Sql server 连接Tsql中的空值列

Sql server 连接Tsql中的空值列,sql-server,tsql,Sql Server,Tsql,我使用+连接几列的值。但是,+如果其中一列的值为空,则该列不起作用。比如说 Select null+ 'Test' 查询返回null而不是“Test” 你对解决那个问题有什么建议 在SQL Server 2012之前的版本上,您应该使用 Select ISNULL(YourColumn,'') + 'Test' /*Or COALESCE(YourColumn,'')*/ 为了避免这个问题 有一个连接选项,但已弃用 SQL Server 2012引入了在连接时将NULL视为空字符串的函

我使用
+
连接几列的值。但是,
+
如果其中一列的值为空,则该列不起作用。比如说

Select null+ 'Test'
查询返回null而不是“Test”


你对解决那个问题有什么建议

在SQL Server 2012之前的版本上,您应该使用

   Select ISNULL(YourColumn,'') + 'Test' /*Or COALESCE(YourColumn,'')*/
为了避免这个问题

有一个连接选项,但已弃用

SQL Server 2012引入了在连接时将
NULL
视为空字符串的函数

SELECT CONCAT(null,'Test')
使用:


有没有其他方法可以解决这个问题?我正在将我的项目从oracle迁移到mssql,我不想将isnull控件添加到每个control@jhash-我知道的仅有3种方式已经在我的答案中了
ISNULL
COALESCE
,或
CONCAT\u NULL\u产生\u NULL
。我只想将
COALESCE
添加到所有相关的位置,因为这是标准的,可以在Oracle和SQL Server中使用。如果您想使用不推荐使用的功能,但这些功能在将来的版本中将停止工作,并且此连接选项与某些SQL Server功能不兼容,则由您决定。我自己不会使用它。@jhash-尽管我怀疑我的断言,它现在能在Oracle上工作
COALESCE
肯定会,但AFAIK Oracle将空字符串视为NULL,因此我不知道最终结果会是什么!这可能并不重要,因为Oracle没有使用
+
进行字符串连接。有没有其他方法可以解决这个问题?我正在将我的项目从Oracle迁移到mssql,我不想将isnull控件添加到每个控件我想Martin有一个解决方案,可以在不更改查询的情况下工作
SELECT IsNull(MyColumn, '') + 'Test' ...