Beam ZetaSQL 字符串函数
此页面记录了 Beam ZetaSQL 支持的 ZetaSQL 字符串函数。
这些字符串函数作用于 STRING 数据。STRING 值必须是格式良好的 UTF-8。所有字符串比较都是逐字节进行的,不考虑 Unicode 规范等效性。
运算符语法 | 描述 |
---|---|
CHAR_LENGTH(value) | 返回字符串的字符长度 |
CHARACTER_LENGTH(value) | CHAR_LENGTH 的同义词 |
CONCAT(value1[, …]) | 将最多五个值连接成一个结果 |
ENDS_WITH(value1, value2) | 如果第二个值是第一个值的尾缀,则返回 TRUE |
LTRIM(value1[, value2]) | 与 TRIM 相同,但只删除前导字符。 |
REPLACE(original_value, from_value, to_value) | 用 to_value 替换 original_value 中所有出现的 from_value |
REVERSE(value) | 返回输入字符串的反转 |
RTRIM(value1[, value2]) | 与 TRIM 相同,但只删除尾随字符 |
STARTS_WITH(value1, value2) | 如果第二个值是第一个值的前缀,则返回 TRUE。 |
SUBSTR(value, position[, length]) | 返回提供的值的子字符串 |
TRIM(value1[, value2]) | 删除与 value2 匹配的所有前导和尾随字符 |
CHAR_LENGTH
CHAR_LENGTH(value)
描述
返回 STRING 中的字符长度。
返回类型
INT64
示例
Table example:
+----------------+
| characters |
+----------------+
| абвгд |
+----------------+
SELECT
characters,
CHAR_LENGTH(characters) AS char_length_example
FROM example;
+------------+---------------------+
| characters | char_length_example |
+------------+---------------------+
| абвгд | 5 |
+------------+---------------------+
CHARACTER_LENGTH
CHARACTER_LENGTH(value)
描述
CHAR_LENGTH 的同义词。
返回类型
INT64
示例
Table example:
+----------------+
| characters |
+----------------+
| абвгд |
+----------------+
SELECT
characters,
CHARACTER_LENGTH(characters) AS char_length_example
FROM example;
+------------+---------------------+
| characters | char_length_example |
+------------+---------------------+
| абвгд | 5 |
+------------+---------------------+
CONCAT
CONCAT(value1[, ...])
描述
将最多五个值连接成一个结果。
返回类型
STRING
示例
Table Employees:
+-------------+-----------+
| first_name | last_name |
+-------------+-----------+
| John | Doe |
| Jane | Smith |
| Joe | Jackson |
+-------------+-----------+
SELECT
CONCAT(first_name, " ", last_name)
AS full_name
FROM Employees;
+---------------------+
| full_name |
+---------------------+
| John Doe |
| Jane Smith |
| Joe Jackson |
+---------------------+
ENDS_WITH
ENDS_WITH(value1, value2)
描述
采用两个值。如果第二个值是第一个值的尾缀,则返回 TRUE。
返回类型
BOOL
示例
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
ENDS_WITH(item, "e") as example
FROM items;
+---------+
| example |
+---------+
| True |
| False |
| True |
+---------+
LTRIM
LTRIM(value1[, value2])
描述
与 TRIM 相同,但只删除前导字符。
返回类型
STRING
示例
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
CONCAT("#", LTRIM(item), "#") as example
FROM items;
+-------------+
| example |
+-------------+
| #apple # |
| #banana # |
| #orange # |
+-------------+
Table items:
+----------------+
| item |
+----------------+
| ***apple*** |
| ***banana*** |
| ***orange*** |
+----------------+
SELECT
LTRIM(item, "*") as example
FROM items;
+-----------+
| example |
+-----------+
| apple*** |
| banana*** |
| orange*** |
+-----------+
Table items:
+----------------+
| item |
+----------------+
| xxxapplexxx |
| yyybananayyy |
| zzzorangezzz |
| xyzpearzyz |
+----------------+
SELECT
LTRIM(item, "xyz") as example
FROM items;
+-----------+
| example |
+-----------+
| applexxx |
| bananayyy |
| orangezzz |
| pearxyz |
+-----------+
REPLACE
REPLACE(original_value, from_value, to_value)
描述
用 to_value
替换 original_value
中所有出现的 from_value
。如果 from_value
为空,则不进行替换。
返回类型
STRING
示例
+--------------------+
| dessert |
+--------------------+
| apple pie |
| blackberry pie |
| cherry pie |
+--------------------+
SELECT
REPLACE (dessert, "pie", "cobbler") as example
FROM desserts;
+--------------------+
| example |
+--------------------+
| apple cobbler |
| blackberry cobbler |
| cherry cobbler |
+--------------------+
REVERSE
REVERSE(value)
描述
返回输入 STRING 的反转。
返回类型
STRING
示例
WITH example AS (
SELECT "foo" AS sample_string UNION ALL
SELECT "абвгд" AS sample_string
)
SELECT
sample_string,
REVERSE(sample_string) AS reverse_string
FROM example;
+---------------+----------------+
| sample_string | reverse_string |
+---------------+----------------+
| foo | oof |
| абвгд | дгвба |
+---------------+----------------+
RTRIM
RTRIM(value1[, value2])
描述
与 TRIM 相同,但只删除尾随字符。
返回类型
STRING
示例
Table items:
+----------------+
| item |
+----------------+
| ***apple*** |
| ***banana*** |
| ***orange*** |
+----------------+
SELECT
RTRIM(item, "*") as example
FROM items;
+-----------+
| example |
+-----------+
| ***apple |
| ***banana |
| ***orange |
+-----------+
Table items:
+----------------+
| item |
+----------------+
| applexxx |
| bananayyy |
| orangezzz |
| pearxyz |
+----------------+
SELECT
RTRIM(item, "xyz") as example
FROM items;
+---------+
| example |
+---------+
| apple |
| banana |
| orange |
| pear |
+---------+
STARTS_WITH
STARTS_WITH(value1, value2)
描述
采用两个值。如果第二个值是第一个值的前缀,则返回 TRUE。
返回类型
BOOL
示例
SELECT
STARTS_WITH(item, "b") as example
FROM (
SELECT "foo" as item
UNION ALL SELECT "bar" as item
UNION ALL SELECT "baz" as item) AS items;
+---------+
| example |
+---------+
| False |
| True |
| True |
+---------+
SUBSTR
SUBSTR(value, position[, length])
描述
返回提供的值的子字符串。position
参数是一个整数,指定子字符串的起始位置,其中 position = 1 表示第一个字符或字节。length
参数是 STRING 参数的最大字符数。
如果 position
为负数,则该函数从 value
的末尾开始计数,其中 -1 表示最后一个字符。
如果 position
是 STRING 左端以外的位置(position
= 0 或 position
< -LENGTH(value)
),则该函数从 position = 1 开始。如果 length
超过 value
的长度,则返回少于 length
个字符。
如果 length
小于 0,则该函数返回错误。
返回类型
STRING
示例
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
SUBSTR(item, 2) as example
FROM items;
+---------+
| example |
+---------+
| pple |
| anana |
| range |
+---------+
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
SUBSTR(item, 2, 2) as example
FROM items;
+---------+
| example |
+---------+
| pp |
| an |
| ra |
+---------+
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
SUBSTR(item, -2) as example
FROM items;
+---------+
| example |
+---------+
| le |
| na |
| ge |
+---------+
TRIM
TRIM(value1[, value2])
描述
删除与 value2
匹配的所有前导和尾随字符。如果未指定 value2
,则删除所有前导和尾随空格字符(由 Unicode 标准定义)。
如果 value2
包含多个字符,则该函数删除 value2
中包含的所有前导或尾随字符。
返回类型
STRING
示例
Table items:
+----------------+
| item |
+----------------+
| apple |
| banana |
| orange |
+----------------+
SELECT
CONCAT("#", TRIM(item), "#") as example
FROM items;
+----------+
| example |
+----------+
| #apple# |
| #banana# |
| #orange# |
+----------+
Table items:
+----------------+
| item |
+----------------+
| ***apple*** |
| ***banana*** |
| ***orange*** |
+----------------+
SELECT
TRIM(item, "*") as example
FROM items;
+---------+
| example |
+---------+
| apple |
| banana |
| orange |
+---------+
Table items:
+----------------+
| item |
+----------------+
| xxxapplexxx |
| yyybananayyy |
| zzzorangezzz |
| xyzpearxyz |
+----------------+
SELECT
TRIM(item, "xyz") as example
FROM items;
+---------+
| example |
+---------+
| apple |
| banana |
| orange |
| pear |
+---------+