检查 table 中的空值

Checking for null values in a table

我有一个 table 有几列,其中一些是:

我正在制作附加字符串的程序(稍后用于查询) 但有一个问题:

如果这 4 列都为空,那没关系。但是,如果 FILTER_COLUMN 不为空,我必须保证 至少其他三个中的一个 NOT 为空。

因为我在 PL/SQL 有点菜鸟所以我决定这样做 "the wrong way":

IF FILTER_COLUMN IS NOT NULL
    IF L_FILTER_VALUEN IS NULL
        IF L_FILTER_VALUEA IS NULL
            IF L_FILTER_LIST_ID IS NULL 
                RETURN FALSE;
            ELSE 
                SQL_STMT := L_FILTER_LIST_ID 
            END IF;
        ELSE
   ....
 (and so on)

是否有更简洁的方法来追加所有非空列?

根据我的想法,您有 2 个基本选项:

  • 使用 AND:

    IF filter_column IS NOT NULL THEN
      IF l_filter_valuen IS NULL AND l_filter_valuea IS NULL AND l_filter_list_id IS NULL THEN
        RETURN FALSE;
      ELSE 
        sql_stmt := l_filter_list_id;
      END IF;
    ELSE
      ....
      (and so on)
    
  • 使用 COALESCE 函数,它将 return 第一个非空变量。如果它 returns NULL 这意味着所有的变量都是 NULL:

    IF filter_column IS NOT NULL THEN
      IF COALESCE(l_filter_valuen, l_filter_valuea, l_filter_list_id) IS NULL THEN
        RETURN FALSE;
      ELSE 
        sql_stmt := l_filter_list_id;
      END IF;
    ELSE
      ....
      (and so on)