PostgreSQL 教程: length 函数

九月 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;

postgresql length function example

有时,您可能想要测量数字而不是字符串的长度。在这种情况下,您可以使用类型转换将数字转换为字符串,并使用 length 函数,如下例所示:

SELECT
	LENGTH (CAST(12345 AS TEXT)); --- 5

我们经常将 length 函数与其他字符串函数(例如replacesubstring等)一起使用,以更有效地操作字符串。以下语句使用substringstrposlength函数从电子邮件地址获取用户名和域。

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_lengthcharacter_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 文档:字符串函数和操作符