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    |
+---------+