更新时间:2025-11-19 GMT+08:00
分享

获取字符串长度

bit_length(string)

描述:字符串的位数。返回结果为字节数乘以8,得到总位数。字符串的位数取决于数据库编码方式,例如GBK字符编码下,一个中文为2个字节,UTF8和SQL_ASCII字符编码下,一个中文字为3个字节。

返回值类型:integer

示例:

1
2
3
4
5
SELECT bit_length('world');
 bit_length
------------
         40
(1 row)

GBK字符编码下,示例:

1
2
3
4
5
SELECT bit_length('我们');
 bit_length
------------
         32
(1 row)

UTF8和SQL_ASCII字符编码下,示例:

1
2
3
4
5
SELECT bit_length('我们');
 bit_length
------------
         48
(1 row)

lengthb(text/bpchar)

描述:获取指定字符串的字节数。

返回值类型:integer

  • 若字符串中存在换行符,如字符串由一个换行符和一个空格组成,在DWS中LENGTH和LENGTHB的值为2。
  • 此函数获取的为指定字符串的字节数,对于多字节字符编码,一个字符可能占用多个字节(例如,UTF-8编码中,中文字符通常占用3个字节)。

示例:

1
2
3
4
5
SELECT lengthb('hello');
 lengthb
---------
       5
(1 row)

UTF8编码中,示例:

1
2
3
4
5
SELECT lengthb('数据库');
 lengthb
---------
       9
(1 row)

char_length(string)或character_length(string)

描述:获取字符串中的字符个数。

返回值类型:integer

对于多字节字符编码,一个字符可能占用多个字节(例如,UTF-8编码中,中文字符通常占用3个字节)。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT char_length('hello');
 char_length
-------------
           5
(1 row)

SELECT char_length('数据库');
 char_length
-------------
           9
(1 row)

length(string bytea, encoding name)

描述:获取指定编码格式的字符串的字符数。在指定的编码格式中,string必须是有效的。

返回值类型:integer

示例:

1
2
3
4
5
SELECT length('database', 'UTF8');
 length
--------
      8
(1 row)

octet_length(string)

描述:获取字符串中的字节数。该函数返回字符串的字节数,对于处理多字节字符(如 UTF-8 编码的汉字、特殊符号等)非常重要,它能准确获取字符串的存储大小。

返回值类型:integer

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
SELECT octet_length('data');
 octet_length
--------------
            4
(1 row)

SELECT octet_length('数据库');
 octet_length
--------------
            9
(1 row)

length(string)

描述:获取字符串的字符长度(字符数量)。

返回值类型:integer

示例:

1
2
3
4
5
SELECT length('database');
 length 
--------
      8
(1 row)

lengthb(string)

描述:获取字符串的字节长度。与字符集有关,同样的中文字符,在GBK与UTF8中,返回的字节数不同。

返回值类型:integer

示例:

1
2
3
4
5
SELECT lengthb('hello');
 lengthb 
---------
       5
(1 row)

相关文档