Beam ZetaSQL 文字列関数

このページでは、Beam ZetaSQL でサポートされている ZetaSQL 文字列関数について説明します。

これらの文字列関数は STRING データに対して機能します。STRING 値は、整形式の UTF-8 である必要があります。すべての文字列比較は、Unicode の正規等価性を考慮せずに、バイト単位で実行されます。

演算子の構文説明
CHAR_LENGTH(value)文字列の長さを文字数で返します
CHARACTER_LENGTH(value)CHAR_LENGTH のシノニム
CONCAT(value1[, …])最大5つの値を連結して1つの結果にします
ENDS_WITH(value1, value2)2番目の値が最初の値の接尾辞である場合は 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)2番目の値が最初の値の接頭辞である場合は 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[, ...])

説明

最大5つの値を連結して1つの結果にします。

戻り値の型

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)

説明

2つの値を受け取ります。2番目の値が最初の値の接尾辞である場合は 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)

説明

2つの値を受け取ります。2番目の値が最初の値の接頭辞である場合は 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 から開始します。lengthvalue の長さを超える場合、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    |
+---------+