文字列関数と演算子

文字列演算子

|| 演算子は連結を実行します。

文字列関数

注意

これらの関数は、入力文字列に有効な UTF-8 エンコードされた Unicode コードポイントが含まれていることを前提としています。有効な UTF-8 の明示的なチェックはなく、関数は無効な UTF-8 に対して誤った結果を返す場合があります。無効な UTF-8 データは、from_utf8() で修正できます。

さらに、関数はユーザーに見える *文字* (または *書記素クラスター*) ではなく、Unicode コードポイントで動作します。一部の言語では、複数のコードポイントを単一のユーザー認識 *文字*、つまり言語の記述システムの基本単位に結合しますが、関数は各コードポイントを個別の単位として扱います。

lower() 関数と upper() 関数は、一部の言語で必要なロケールに依存した、文脈に依存した、または一対多のマッピングを実行しません。具体的には、リトアニア語、トルコ語、アゼルバイジャン語では誤った結果が返されます。

chr(n) -> varchar()

Unicode コードポイント n を単一の文字文字列として返します。

codepoint(string) -> integer()

string の唯一の文字の Unicode コードポイントを返します。

concat(string1, ..., stringN) -> varchar()

string1string2...stringN の連結を返します。この関数は、SQL 標準の連結演算子 (||) と同じ機能を提供します。

ends_with(string, substring) -> boolean()

stringsubstring で終わるかどうかを返します。

hamming_distance(string1, string2) -> bigint()

string1string2 のハミング距離、つまり、対応する文字が異なる位置の数を返します。2つの文字列は同じ長さである必要があることに注意してください。

length(string) -> bigint()

string の長さを文字数で返します。

levenshtein_distance(string1, string2) -> bigint()

string1string2 のレーベンシュタイン編集距離、つまり、string1string2 に変更するために必要な最小限の単一文字編集 (挿入、削除、または置換) の数を返します。

lower(string) -> varchar()

string を小文字に変換します。

lpad(string, size, padstring) -> varchar()

stringpadstringsize 文字になるまで左パディングします。sizestring の長さよりも小さい場合、結果は size 文字に切り捨てられます。size は負の数であってはならず、padstring は空であってはなりません。

ltrim(string) -> varchar()

string から先頭の空白を削除します。認識される空白文字のセットについては、trim() を参照してください。

ltrim(string, chars) -> varchar()

string の先頭から、chars に含まれる文字のみで構成される最長のサブストリングを削除します。

SELECT ltrim('test', 't'); -- est
SELECT ltrim('tetris', 'te'); -- ris
replace(string, search) -> varchar()

string から search のすべての出現箇所を削除します。

replace(string, search, replace) -> varchar()

string 内のすべての search の出現箇所を replace に置き換えます。

search が空の文字列の場合、string のすべての文字の前と最後に replace を挿入します。

replace_first(string, search, replace) -> varchar()
``string`` 内で 最初 ``search`` の出現箇所を ``replace`` に置き換えます()

search が空の文字列の場合、string の先頭に replace を挿入します。

reverse(string) -> varchar()

string の文字を逆順にしたものを返します。

rpad(string, size, padstring) -> varchar()

string の右側を padstringsize 文字になるまで埋めます。 sizestring の長さよりも小さい場合、結果は size 文字に切り捨てられます。size は負の数であってはならず、padstring は空であってはなりません。

rtrim(string) -> varchar()

string の末尾の空白文字を削除します。認識される空白文字のセットについては、trim() を参照してください。

rtrim(string, chars) -> varchar()

string の末尾から、chars に含まれる文字のみで構成される最長のサブストリングを削除します。

SELECT rtrim('test', 't'); -- tes
SELECT rtrim('test...', '.'); -- test
split(string, delimiter) -> array(varchar)

stringdelimiter で分割し、配列を返します。

split(string, delimiter, limit) -> array(varchar)

stringdelimiter で分割し、最大サイズが limit の配列を返します。配列の最後の要素には、string に残っているすべてのものが常に含まれます。limit は正の数である必要があります。

split_part(string, delimiter, index) -> varchar()

stringdelimiter で分割し、フィールド index を返します。フィールドのインデックスは 1 から始まります。インデックスがフィールド数よりも大きい場合は、null が返されます。

split_to_map(string, entryDelimiter, keyValueDelimiter) -> map<varchar, varchar>()

stringentryDelimiter および keyValueDelimiter で分割し、マップを返します。entryDelimiterstring をキーと値のペアに分割します。keyValueDelimiter は各ペアをキーと値に分割します。 entryDelimiter および keyValueDelimiter は、文字どおりに(つまり、完全な文字列一致として)解釈されることに注意してください。

split_to_map(string, entryDelimiter, keyValueDelimiter, function(K,V1,V2,R)) -> map<varchar, varchar>()

stringentryDelimiter および keyValueDelimiter で分割し、マップを返します。entryDelimiterstring をキーと値のペアに分割します。keyValueDelimiter は各ペアをキーと値に分割します。 entryDelimiter および keyValueDelimiter は、文字どおりに(つまり、完全な文字列一致として)解釈されることに注意してください。重複するキーの場合、マップに含める値を解決するために function(K,V1,V2,R) が呼び出されます。

SELECT(split_to_map('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> v1)); -- {"a": "1", "b": "2"}
SELECT(split_to_map('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> CONCAT(v1, v2))); -- {"a": "13", "b": "2"}
split_to_multimap(string, entryDelimiter, keyValueDelimiter) -> map(varchar, array(varchar))

stringentryDelimiter および keyValueDelimiter で分割し、一意のキーごとに値の配列を含むマップを返します。entryDelimiterstring をキーと値のペアに分割します。keyValueDelimiter は各ペアをキーと値に分割します。各キーの値は、string に現れた順序と同じになります。 entryDelimiter および keyValueDelimiter は、文字どおりに(つまり、完全な文字列一致として)解釈されることに注意してください。

strpos(string, substring) -> bigint()

string 内の substring の最初の出現箇所の開始位置を返します。位置は 1 から始まります。見つからない場合は、0 が返されます。

starts_with(string, substring) -> boolean()

stringsubstring で始まるかどうかを返します。

strpos(string, substring, instance) -> bigint()

string 内の substring の N 番目の instance の位置を返します。instance は正の数である必要があります。位置は 1 から始まります。見つからない場合は、0 が返されます。

strrpos(string, substring) -> bigint()

string 内で、substring の最後の出現箇所の開始位置を返します。位置は 1 から始まります。見つからない場合は、0 が返されます。

strrpos(string, substring, instance) -> bigint()

string の末尾から数えて、substring の N 番目の instance の位置を返します。instance は正の数である必要があります。位置は 1 から始まります。見つからない場合は、0 が返されます。

position(substring IN string) -> bigint()

string 内の substring の最初の出現箇所の開始位置を返します。位置は 1 から始まります。見つからない場合は、0 が返されます。

substr(string, start) -> varchar()

開始位置 start から始まる string の残りの部分を返します。位置は 1 から始まります。負の開始位置は、文字列の末尾からの相対位置として解釈されます。

substr(string, start, length) -> varchar()

開始位置 start から length の長さの string からのサブストリングを返します。位置は 1 から始まります。負の開始位置は、文字列の末尾からの相対位置として解釈されます。

trail(string, N) -> varchar()

入力文字列の最後の N 文字を返します。

trim(string) -> varchar()

string の先頭と末尾の空白文字を削除します。

認識される空白文字

コード

説明

コード

説明

9

TAB (水平タブ)

U+1680

オガムスペースマーク

10

LF (NL 改行、新しい行)

U+2000

エンクワッド

11

VT (垂直タブ)

U+2001

エムクワッド

12

FF (NP フォームフィード、新しいページ)

U+2002

エンスペース

13

CR (キャリッジリターン)

U+2003

エムスペース

28

FS (ファイル区切り記号)

U+2004

3パーエムスペース

29

GS (グループ区切り記号)

U+2005

4パーエムスペース

30

RS (レコード区切り記号)

U+2006

4パーエムスペース

31

US (ユニット区切り記号)

U+2008

句読点スペース

32

スペース

U+2009

シンスペース

_

_

U+200a

ヘアスペース

_

_

U+200a

ヘアスペース

_

_

U+2028

行区切り記号

_

_

U+2029

段落区切り記号

_

_

U+205f

中程度の数学的スペース

_

_

U+3000

表意文字スペース

trim(string, chars) -> varchar()

string の先頭と末尾から、chars 内の文字のみを含む最長のサブストリングを削除します。

SELECT trim('test', 't'); -- es
SELECT trim('.t.e.s.t.', '.t'); -- e.s
upper(string) -> varchar()

string を大文字に変換します。

word_stem(word) -> varchar()

英語での word の語幹を返します。

word_stem(word, lang) -> varchar()

lang 言語での word の語幹を返します。

Unicode関数

normalize(string) -> varchar()

NFC正規化形式で string を変換します。

normalize(string, form) -> varchar()

指定された正規化形式で string を変換します。form は、次のキーワードのいずれかである必要があります

形式

説明

NFD

正準分解

NFC

正準分解、それに続く正準合成

NFKD

互換分解

NFKC

互換分解、それに続く正準合成

注意

このSQL標準関数には特別な構文があり、form を文字列ではなくキーワードとして指定する必要があります。

to_utf8(string) -> varbinary()

string を UTF-8 varbinary 表現にエンコードします。

from_utf8(binary) -> varchar()

binary から UTF-8 エンコードされた文字列をデコードします。無効な UTF-8 シーケンスは、Unicode 置換文字 U+FFFD に置き換えられます。

from_utf8(binary, replace) -> varchar()

binary から UTF-8 エンコードされた文字列をデコードします。無効な UTF-8 シーケンスは、replace に置き換えられます。置換文字列 replace は、1文字であるか空である必要があります(この場合、無効な文字は削除されます)。

key_sampling_percent(varchar) -> double()

指定された varchar のハッシュに基づいて、0.0 から 1.0 の間の double 値を生成します。この関数は、データの決定論的サンプリングに役立ちます。