Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
当id.id为null时的TSQL情况,然后“”else'@'结束_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

当id.id为null时的TSQL情况,然后“”else'@'结束

当id.id为null时的TSQL情况,然后“”else'@'结束,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,在我的select中,我使用这样的语句来添加第二个单元格(如果它不为null),如果它为null,则将单元格归零 Child.Tag + '@' + ISNULL(CONVERT(varchar(50),parent.Tag),'') as 'Location' 这将返回F123@A123如果有父位置。 但是,如果没有父位置,它将返回F123@,我希望它只返回F123@ 我已将select调整为: Child.Tag + CASE Parent.Tag when null then '' el

在我的select中,我使用这样的语句来添加第二个单元格(如果它不为null),如果它为null,则将单元格归零

Child.Tag + '@' + ISNULL(CONVERT(varchar(50),parent.Tag),'') as 'Location'
这将返回F123@A123如果有父位置。 但是,如果没有父位置,它将返回F123@,我希望它只返回F123@

我已将select调整为:

Child.Tag + CASE Parent.Tag when null then '' else '@' end
但是,如果父位置为null,则仍然返回F123@

是否有人知道如何让它停止返回“@”,如果有人能解释为什么我的案例陈述不起作用,我们将不胜感激

多谢各位

其他信息:我在SSMS 2008上

我想你想要这个:

Child.Tag + COALECE('@' + Parent.Tag, '')
只有当Parent.Tag有值时,才会添加“@”

对于简单的情况,最重要的是:

对输入表达式求值,然后按照指定的顺序对每个when子句的输入表达式=when表达式求值。 NULL未通过相等性测试。这很微妙,但聚合形式更易于阅读和书写。

我想您需要这样:

Child.Tag + COALECE('@' + Parent.Tag, '')
只有当Parent.Tag有值时,才会添加“@”

对于简单的情况,最重要的是:

对输入表达式求值,然后按照指定的顺序对每个when子句的输入表达式=when表达式求值。 NULL未通过相等性测试。这很微妙,但是合并形式更易于阅读和写入。

正如Gordon所指出的,如果Parent.Tag为null,则CASE Parent.Tag when null永远不会计算为true,即使Parent.Tag为null-但是,如果Parent.Tag为null,则CASE when Parent.Tag将在Parent.Tag为null时计算为true

所以当值。。。形式,当表达式为真时。。。形式如下:

Child.Tag + CASE when Parent.Tag is null then '' else '@' end + ...
正如Gordon所指出的,即使Parent.Tag为null,CASE Parent.Tag when null也不会计算为true——然而,CASE when Parent.Tag when null将在Parent.Tag为null时计算为true

所以当值。。。形式,当表达式为真时。。。形式如下:

Child.Tag + CASE when Parent.Tag is null then '' else '@' end + ...

“@”+NULL为空…“@”+NULL为空。。。