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)original_value 中所有出現的 from_value 取代為 to_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)

說明

original_value 中所有出現的 from_value 取代為 to_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    |
+---------+