Sql server 连接t-sql中的列,但排除空列
所以我需要一个自定义字符串在每个列之前,如图所示。但是,例如,如果Column2为null,我希望排除整个部分“Column 2:”+t.Column2 Where子句仅显示NOTNULL列不是我想要的,因为对于某些行,所有3列都为null是有效的。假设已启用(默认情况下,应该是),您可以执行以下操作:Sql server 连接t-sql中的列,但排除空列,sql-server,tsql,Sql Server,Tsql,所以我需要一个自定义字符串在每个列之前,如图所示。但是,例如,如果Column2为null,我希望排除整个部分“Column 2:”+t.Column2 Where子句仅显示NOTNULL列不是我想要的,因为对于某些行,所有3列都为null是有效的。假设已启用(默认情况下,应该是),您可以执行以下操作: SELECT 'Column 1: ' + t.Column1 + 'Column 2: ' + t.Column2 + 'Column 3: ' + t.Column3 from Tab
SELECT 'Column 1: ' + t.Column1 +
'Column 2: ' + t.Column2 +
'Column 3: ' + t.Column3
from Table1 t
如果任何列为NULL
,则'column name'+column
将为NULL
COALESCE
然后用空字符串替换NULL
s,以便外部+
s连接非NULL字符串。假设已启用(默认情况下应该启用),您可以执行以下操作:
SELECT 'Column 1: ' + t.Column1 +
'Column 2: ' + t.Column2 +
'Column 3: ' + t.Column3
from Table1 t
如果任何列为
NULL
,则'column name'+column
将为NULL
<代码>合并然后用空字符串替换NULL
s,以便外部+
s连接非空字符串。在SQL Server中,将NULL
连接到字符串将导致NULL
。利用这一事实,您可以这样做:
SELECT COALESCE('Column 1: ' + t.Column1,'') +
COALESCE('Column 2: ' + t.Column2,'') +
COALESCE('Column 3: ' + t.Column3,'')
from Table1 t
在SQL Server 2012或更高版本中,您可以使用内置函数Concat
,但仍需要以旧方式将列连接到硬编码的描述中,以利用前面描述的效果
SELECT ISNULL('Column 1: ' + t.Column1, '') +
ISNULL('Column 2: ' + t.Column2, '') +
ISNULL('Column 3: ' + t.Column3, '')
FROM Table
在SQL Server中,将
null
连接到字符串将导致null
。利用这一事实,您可以这样做:
SELECT COALESCE('Column 1: ' + t.Column1,'') +
COALESCE('Column 2: ' + t.Column2,'') +
COALESCE('Column 3: ' + t.Column3,'')
from Table1 t
在SQL Server 2012或更高版本中,您可以使用内置函数Concat
,但仍需要以旧方式将列连接到硬编码的描述中,以利用前面描述的效果
SELECT ISNULL('Column 1: ' + t.Column1, '') +
ISNULL('Column 2: ' + t.Column2, '') +
ISNULL('Column 3: ' + t.Column3, '')
FROM Table
我想补充一点,在SQL Server的未来版本中,
CONCAT\u NULL\u YIELDS\u NULL
是无润滑的,并且将始终设置为ON
,直接添加到答案中,即使它在链接上有说明。我想补充一个事实,即CONCAT\u NULL\u-NULL
是无润滑的,并且在SQL Server的未来版本中总是设置为on
,即使它在链接上有说明。