在select语句中使用sql-ISNOTNULL
我似乎不知道如何在sql中使用与isnull或ifnull相反的语句。我需要说如果a.Error1不为空-然后打印“-”和+CHAR13+CHAR10。如果a.Error1返回空值,基本上不应该有破折号或新行中断。因此,如果字段不为空,则打印信息在select语句中使用sql-ISNOTNULL,sql,sql-server,null,isnull,ifnull,Sql,Sql Server,Null,Isnull,Ifnull,我似乎不知道如何在sql中使用与isnull或ifnull相反的语句。我需要说如果a.Error1不为空-然后打印“-”和+CHAR13+CHAR10。如果a.Error1返回空值,基本上不应该有破折号或新行中断。因此,如果字段不为空,则打印信息 select a. .... ' - ' + a.Error1 + CHAR(13)+CHAR(10) + ' - ' + a.Error2 + CHAR(13)+CHAR(10) + ' - ' + a.Error3 + CHAR(13)+CH
select a. ....
' - ' + a.Error1 + CHAR(13)+CHAR(10) +
' - ' + a.Error2 + CHAR(13)+CHAR(10) +
' - ' + a.Error3 + CHAR(13)+CHAR(10) +
' - ' + a.Error4 + CHAR(13)+CHAR(10) +
' - ' + a.Error5 + CHAR(13)+CHAR(10) +
' - ' + a.Error6 as 'error_message'
...
from table1 a
例如,如果对于给定的记录error1、Error2和Error5返回输出,我希望输出如下:
-错误1:有一个。。。
-错误2:。。。。
-错误5:数据是
如果该行不存在错误,则该行应为空/空字段 您可以使用以下用例:
该函数在这里实现了您想要的功能。COALESCE的结果是它传递的第一个非空值。下面我们使用,它不同于NULL,因此外部+总是应用于非NULL字符串
e、 g
对!!我知道我已经晚了5年,但我也遇到了这个问题 奇怪的是它怎么就不存在了!是空的,但不管怎样 请尝试以下操作以获得更清晰的代码:
select a. ....
IIF(a.Error1 IS NOT NULL, ' - ' + a.Error1 + CHAR(13)+CHAR(10) , '') as Error1,
IIF(a.Error1 IS NOT NULL, ' - ' + a.Error1 + CHAR(13)+CHAR(10) , '') as Error2
from table1 a
了解有关IIF函数的更多信息:如果值为null,是否无法使用类似于evaluate的方法?并在此基础上打印输出?此外,对于给定的行,可能会有多个错误,因此我们需要输出包括error1和error2等。我们不能使用案例,因为一旦发现一个错误,其他案例将不会被计算。@Elizabeth case是SQL Server中的方法。那么,如果a.Error1为null,您想要什么样的输出?如果a.Error1为null,只需要一个空格或空字段。否则,应打印所有数据的实际值errors@Elizabeth这正是上面代码所做的:如果a.Error1为null,则在其位置使用空字符串。您可以用“”替换以获得一些空白。对,上面的代码很好-但是如果case1是正确的,case2没有计算等等,case语句难道不起作用吗?我希望对所有案例进行评估,并打印所有错误,因为每行可能有多个错误。您应该解释为什么这样做有效,并且比其他答案更好,即使用NULL连接返回NULL可能的重复
SELECT (CASE WHEN a.Error1 IS NOT NULL
THEN ' - ' + a.Error1 + CHAR(13)+CHAR(10) +
ELSE a.Error1
END) +
(CASE WHEN a.Error2 IS NOT NULL
THEN ' - ' + a.Error2 + CHAR(13)+CHAR(10) +
ELSE a.Error2
END) +
.....etc
select a. ....
COALESCE( ' - ' + a.Error1 + CHAR(13)+CHAR(10), '' ) +
COALESCE( ' - ' + a.Error2 + CHAR(13)+CHAR(10), '' ) +
COALESCE( ' - ' + a.Error3 + CHAR(13)+CHAR(10), '' ) +
COALESCE( ' - ' + a.Error4 + CHAR(13)+CHAR(10), '' ) +
COALESCE( ' - ' + a.Error5 + CHAR(13)+CHAR(10), '' ) +
COALESCE( ' - ' + a.Error6 , '' ) as 'error_message'
...
from table1 a
select a. ....
IIF(a.Error1 IS NOT NULL, ' - ' + a.Error1 + CHAR(13)+CHAR(10) , '') as Error1,
IIF(a.Error1 IS NOT NULL, ' - ' + a.Error1 + CHAR(13)+CHAR(10) , '') as Error2
from table1 a