Sql server 当所选行为';是字段的串联吗?
我的这一行是SQL Select的一部分:Sql server 当所选行为';是字段的串联吗?,sql-server,Sql Server,我的这一行是SQL Select的一部分: REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' + REPLACE(STR(A.UserTestId,5),' ','0') + '-' + REPLACE(STR(A.Sequence,2),' ','0') as TestId, 当序列为null时,TestId返回null。如果序列为null,我希望只显示零填充的AdminTestID“-”和零填充的UserTestId 当序列为空或非空时,您可
REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' +
REPLACE(STR(A.UserTestId,5),' ','0') + '-' +
REPLACE(STR(A.Sequence,2),' ','0') as TestId,
当序列为null时,TestId返回null。如果序列为null,我希望只显示零填充的AdminTestID“-”和零填充的UserTestId 当序列为空或非空时,您可以使用CASE在两个场景之间进行分支。 您还可以使用ISNULL和COALESCE进行null检查 根据注释中的要求,添加了代码示例
REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' +
REPLACE(STR(A.UserTestId,5),' ','0') +
ISNULL('-' + REPLACE(STR(A.Sequence,2),' ','0'),'') as TestId,
当序列为空或不为空时,您可以使用CASE在两个场景之间进行分支。 您还可以使用ISNULL和COALESCE进行null检查 根据注释中的要求,添加了代码示例
REPLACE(STR(temp.AdminTestId,5),' ','0') + '-' +
REPLACE(STR(A.UserTestId,5),' ','0') +
ISNULL('-' + REPLACE(STR(A.Sequence,2),' ','0'),'') as TestId,
将空值连接到字符串将在Sql server中返回空字符串。 解决方案通常是使用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,
函数是Sql server将返回它收到的第一个参数,该参数不是NULL
编辑
为了回答您的评论,利用将null连接到字符串将返回null这一事实,您可以简单地将连字符连接到a.Sequence
:
REPLACE(COALESCE(STR(temp.AdminTestId,5), ''),' ','0') + '-' +
REPLACE(COALESCE(STR(A.UserTestId,5), ''),' ','0') +
REPLACE(COALESCE('-' + STR(A.Sequence,2), ''),' ','0') as TestId,
将空值连接到字符串将在Sql server中返回空字符串。 解决方案通常是使用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,
函数是Sql server将返回它收到的第一个参数,该参数不是NULL
编辑
为了回答您的评论,利用将null连接到字符串将返回null这一事实,您可以简单地将连字符连接到a.Sequence
:
REPLACE(COALESCE(STR(temp.AdminTestId,5), ''),' ','0') + '-' +
REPLACE(COALESCE(STR(A.UserTestId,5), ''),' ','0') +
REPLACE(COALESCE('-' + STR(A.Sequence,2), ''),' ','0') as TestId,
不是100%确定我完全理解,但请检查COALESCE函数。您可能也需要CASE。不是100%确定我完全理解,但请查看COALESCE函数。你可能也需要这个箱子,谢谢。我会试试看。对于我的示例,我可以看到缺少的一点是,若序列为null,那个么将有两个连字符。我希望第二个连字符不显示。你能给我一些建议吗?你最后的答案似乎有语法错误0')作为TestId,有一个
,“”)
太多。修好了,谢谢。我会试试看。对于我的示例,我可以看到缺少的一点是,若序列为null,那个么将有两个连字符。我希望第二个连字符不显示。你能给我一些建议吗?你最后的答案似乎有语法错误0')作为TestId,有一个,“”)
太多。固定的。