九月 6, 2023
摘要:在本教程中,我们将向您展示各种返回字符串的字符数或字节数的 PostgreSQL length 函数。
目录
PostgreSQL length 函数简介
下面说明了 length 函数的语法:
LENGTH(string);
length 函数接受一个字符串作为参数。字符串可以是以下任何数据类型:
- character 或 char
- character varying 或 varchar
- text
length 函数返回字符串中的字符数。
PostgreSQL length 函数示例
请查看以下使用 length 函数的示例:
SELECT
LENGTH ('PostgreSQL Tutorial'); -- 19
请注意,字符串可以是一个空字符串,但不是空值。
SELECT
LENGTH (''); -- 0
它返回零。但是,包含空格字符的字符串:
SELECT
LENGTH (' '); -- 1
它返回 1。
如果将 NULL 值传递给 length 函数,它将返回 NULL 值。
SELECT
LENGTH (NULL); -- NULL
以下查询获取customer
表中客户的全名,并使用 length 函数获取其姓名中的字符数。
SELECT
first_name || ' ' || last_name AS name,
LENGTH (first_name || ' ' || last_name) len
FROM
customer
ORDER BY
len;
有时,您可能想要测量数字而不是字符串的长度。在这种情况下,您可以使用类型转换将数字转换为字符串,并使用 length 函数,如下例所示:
SELECT
LENGTH (CAST(12345 AS TEXT)); --- 5
我们经常将 length 函数与其他字符串函数(例如replace、substring等)一起使用,以更有效地操作字符串。以下语句使用substring
、strpos
和length
函数从电子邮件地址获取用户名和域。
SELECT
SUBSTRING (
'info@rockdata.net',
1,
strpos(
'info@rockdata.net',
'@'
) - 1
) AS user_name,
SUBSTRING (
'info@rockdata.net',
strpos(
'info@rockdata.net',
'@'
) + 1,
LENGTH (
'info@rockdata.net'
)
) AS domain_name;
输出:
user_name | domain_name
-----------+--------------
info | rockdata.net
(1 row)
除了 length 函数之外,PostgreSQL 还提供了char_length
和character_length
函数来提供相同的功能。
以字节和位为单位测量字符串
要获取字符串中的字节数,请使用 octet_length 函数,如下所示:
OCTET_LENGTH(string);
请查看以下示例:
SELECT
OCTET_LENGTH ('A'); -- 1 byte
它返回 1 个字节。
SELECT
OCTET_LENGTH ('€'); -- 3 bytes
它返回 3 个字节。但是,使用 length 函数时,它仅返回 1。
SELECT
LENGTH ('€'); -- 1
要测量字符串的位数,请使用bit_length
函数,如下:
BIT_LENGTH(string);
请查看以下使用bit_length
函数的示例。
SELECT
BIT_LENGTH ('A'); -- 8 bits
SELECT
BIT_LENGTH ('€'); -- 24 bits
在本教程中,我们向您展示了如何使用 length、bit_length 和 octet_length 函数返回字符串的字符数、位数和字节数。
了解更多
PostgreSQL 教程:字符串函数
PostgreSQL 文档:字符串函数和操作符