当它是字段的串联时,如何避免我选择的行为空?

时间:2016-03-06 13:23:16

标签: sql-server

我的这一行是我的SQL Select的一部分:

REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' + 
REPLACE(STR(A.UserTestId,5),' ','0') + '-' + 
REPLACE(STR(A.Sequence,2),' ','0') as TestId,

当Sequence为null时,TestId返回null。如果Sequence为null,我想要的只是零填充的AdminTestID“ - ”和零填充的UserTestId出现。

2 个答案:

答案 0 :(得分:3)

当Sequence为null或不为时,您可以使用CASE在两个场景之间进行分支。 您还可以使用ISNULL和COALESCE进行空检查

根据评论中的要求添加了代码示例

REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' + 
REPLACE(STR(A.UserTestId,5),' ','0') +  
ISNULL('-' + REPLACE(STR(A.Sequence,2),' ','0'),'') as TestId,

答案 1 :(得分:1)

将空值连接到字符串将在Sql server中返回空字符串。 解决方案通常是使用Sql server的内置函数将空值转换为空字符串,因此您的代码将如下所示:

function MyCtrl($scope) {
  $scope.createComment = function() {
            console.log("comment is: ", $scope.commentText);
        }
}

COALESCE函数是Sql server将返回它收到的第一个不是REPLACE(COALESCE(STR(temp.AdminTestId,5), ''),' ','0') + '-' + REPLACE(COALESCE(STR(A.UserTestId,5), ''),' ','0') + '-' + REPLACE(COALESCE(STR(A.Sequence,2), ''), ''),' ','0') as TestId, 的参数。

修改

要回答您的评论,利用将null连接到字符串的事实将返回null,您可以简单地将连字符连接到NULL

A.Sequence