数据仓库服务 GAUSSDB(DWS)-字符类型:定长与变长

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

定长与变长

所有字符类型根据长度是否固定可以分为定长字符串与变长字符串两大类。

  • 对于定长字符串,长度必须确定,如果不指定长度,则默认长度1;如果数据长度不足,会在尾部自动填充空格,用以存储和显示;但这部分填充的数据是无意义的,实际使用中会被忽略,如比较、排序或类型转换。
  • 对于变长字符串,若指定长度,则为最大可存储数据长度;如果不指定长度,则认为该字段支持任意长度。

示例:

  1. 创建表t2,指定其字段的字符类型。
    1
    CREATE TABLE t2 (a char(5),b varchar(5));
    
  2. 向表t2插入数据并查询字段a的字节长度。因建表时指定a的字符类型为char(5)且是定长字符串,长度不足,填充空格,所以查询的字节长度为5。
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO t2 VALUES('abc','abc');
    INSERT 0 1
    
    SELECT a,lengthb(a),b FROM t2;
       a   | lengthb |  b
    -------+---------+-----
     abc   |       5 | abc
    (1 row)
    
  3. 用函数转换后查询字段a的实际字节长度为3。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    SELECT a = b from t2;
     ?column?
    ----------
     t
    (1 row)
    
    SELECT cast(a as text) as val,lengthb(val) FROM t2;
     val | lengthb
    -----+---------
     abc |       3
    (1 row)
    
support.huaweicloud.com/sqlreference-820-dws/dws_06_0012.html