数据仓库服务 GAUSSDB(DWS)-字符类型:空串与NULL

时间:2024-01-26 16:15:20

空串与NULL

Oracle兼容模式下,不区分空串与NULL,执行语句查询或数据导入时会将空串处理为NULL。

由于空串默认被处理为NULL,那就不能使用 = '' 作为查询条件,也不能用 is ''。虽然不会有语法错误,但是不会有结果集返回。正确的用法是 is null,不等于就是 is not null 。

示例:

  1. 创建表t4,指定其字段的字符类型。
    1
    CREATE TABLE t4 (a text);
    
  2. 向表t4插入数据,插入值中包含空串和NULL。
    1
    2
    INSERT INTO t4 VALUES('abc'),(''),(null);
    INSERT 0 3
    
  3. 查询表t4中是否存在空值。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    SELECT a,a isnull FROM t4;
      a  | ?column?
    -----+----------
         | t
         | t
     abc | f
    (3 rows)
    
    SELECT a,a isnull FROM t4 WHERE a is null;
     a | ?column?
    ---+----------
       | t
       | t
    (2 rows)
    

TD与MySQL兼容模式下,区分空串与null。

  • TD兼容模式下示例:
    1
    2
    3
    4
    5
    SELECT  '' is null , null is null;
     isnull |  isnull
    --------+----------
     f      | t
    (1 rows)
    
  • MySQL兼容模式下示例:
    1
    2
    3
    4
    5
    SELECT  '' is null , null is null;
     isnull |  isnull
    --------+----------
     f      | t
    (1 rows)
    
support.huaweicloud.com/sqlreference-820-dws/dws_06_0012.html