使用 sql - 在选择语句中不为空

Eli*_*eth 2 sql sql-server null isnull ifnull

我似乎无法弄清楚如何在 sql 中使用 isnull 或 ifnull 语句的反义词。我需要说 ifa.Error1不为空——然后打印' - '和 + CHAR(13)+CHAR(10)。如果 a.Error1 返回空值,基本上应该没有破折号或换行符。因此,如果该字段不为空,则打印信息。

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 
Run Code Online (Sandbox Code Playgroud)

例如,如果对于给定的记录 error1、2 和 5 返回输出,我希望输出如下:
- Error1: There was a ...
- Error2: ....
- Error5: The data was ...

如果该行不存在错误,它应该只是一个空/空字段。

Gio*_*sos 6

您可以使用CASE

SELECT a. ....
       (CASE WHEN a.Error1 IS NOT NULL 
             THEN ' - ' + a.Error1 + CHAR(13)+CHAR(10)  
             ELSE ''
        END) +
       (CASE WHEN a.Error2 IS NOT NULL 
             THEN ' - ' + a.Error2 + CHAR(13)+CHAR(10)  
             ELSE ''
        END) +
       (CASE WHEN a.Error3 IS NOT NULL 
             THEN ' - ' + a.Error3 + CHAR(13)+CHAR(10)  
             ELSE ''
        END) +

   ...etc 
Run Code Online (Sandbox Code Playgroud)