文字列関数と演算子¶
文字列演算子¶
||
演算子は連結を実行します。
文字列関数¶
注意
これらの関数は、入力文字列に有効な 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()¶
string1
、string2
、...
、stringN
の連結を返します。この関数は、SQL 標準の連結演算子 (||
) と同じ機能を提供します。
- ends_with(string, substring) -> boolean()¶
string
がsubstring
で終わるかどうかを返します。
- hamming_distance(string1, string2) -> bigint()¶
string1
とstring2
のハミング距離、つまり、対応する文字が異なる位置の数を返します。2つの文字列は同じ長さである必要があることに注意してください。
- length(string) -> bigint()¶
string
の長さを文字数で返します。
- levenshtein_distance(string1, string2) -> bigint()¶
string1
とstring2
のレーベンシュタイン編集距離、つまり、string1
をstring2
に変更するために必要な最小限の単一文字編集 (挿入、削除、または置換) の数を返します。
- lower(string) -> varchar()¶
string
を小文字に変換します。
- lpad(string, size, padstring) -> varchar()¶
string
をpadstring
でsize
文字になるまで左パディングします。size
がstring
の長さよりも小さい場合、結果は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
の右側をpadstring
でsize
文字になるまで埋めます。size
がstring
の長さよりも小さい場合、結果は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)¶
string
をdelimiter
で分割し、配列を返します。
- split(string, delimiter, limit) -> array(varchar)¶
string
をdelimiter
で分割し、最大サイズがlimit
の配列を返します。配列の最後の要素には、string
に残っているすべてのものが常に含まれます。limit
は正の数である必要があります。
- split_part(string, delimiter, index) -> varchar()¶
string
をdelimiter
で分割し、フィールドindex
を返します。フィールドのインデックスは1
から始まります。インデックスがフィールド数よりも大きい場合は、null が返されます。
- split_to_map(string, entryDelimiter, keyValueDelimiter) -> map<varchar, varchar>()¶
string
をentryDelimiter
およびkeyValueDelimiter
で分割し、マップを返します。entryDelimiter
はstring
をキーと値のペアに分割します。keyValueDelimiter
は各ペアをキーと値に分割します。entryDelimiter
およびkeyValueDelimiter
は、文字どおりに(つまり、完全な文字列一致として)解釈されることに注意してください。
- split_to_map(string, entryDelimiter, keyValueDelimiter, function(K,V1,V2,R)) -> map<varchar, varchar>()¶
string
をentryDelimiter
およびkeyValueDelimiter
で分割し、マップを返します。entryDelimiter
はstring
をキーと値のペアに分割します。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))¶
string
をentryDelimiter
およびkeyValueDelimiter
で分割し、一意のキーごとに値の配列を含むマップを返します。entryDelimiter
はstring
をキーと値のペアに分割します。keyValueDelimiter
は各ペアをキーと値に分割します。各キーの値は、string
に現れた順序と同じになります。entryDelimiter
およびkeyValueDelimiter
は、文字どおりに(つまり、完全な文字列一致として)解釈されることに注意してください。
- strpos(string, substring) -> bigint()¶
string
内のsubstring
の最初の出現箇所の開始位置を返します。位置は1
から始まります。見つからない場合は、0
が返されます。
- starts_with(string, substring) -> boolean()¶
string
がsubstring
で始まるかどうかを返します。
- 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 値を生成します。この関数は、データの決定論的サンプリングに役立ちます。