文字列関数
このページでは、TiDB Cloud Lake の文字列関数について、参照しやすいように機能別に整理して包括的に紹介します。
文字列の連結と操作
| 関数 | 説明 | 例 |
|---|
| CONCAT | 文字列を連結します | CONCAT('data', 'lake') → 'datalake' |
| CONCAT_WS | 区切り文字を使って文字列を連結します | CONCAT_WS('-', 'data', 'lake') → 'data-lake' |
| INSERT | 指定した位置に文字列を挿入します | INSERT('datalake', 5, 0, 'cloud') → 'datacloudlake' |
| REPLACE | 部分文字列の出現箇所を置換します | REPLACE('datalake', 'lake', 'cloud') → 'datacloud' |
| TRANSLATE | 文字を対応する置換文字に置き換えます | TRANSLATE('datalake', 'de', 'DE') → 'DatalakE' |
| 関数 | 説明 | 例 |
|---|
| LEFT | 左端から指定した文字数を返します | LEFT('datalake', 4) → 'data' |
| RIGHT | 右端から指定した文字数を返します | RIGHT('datalake', 4) → 'lake' |
| SUBSTR / SUBSTRING | 部分文字列を抽出します | SUBSTR('datalake', 5, 4) → 'lake' |
| MID | 部分文字列を抽出します(SUBSTRING のエイリアス) | MID('datalake', 5, 4) → 'lake' |
| SPLIT | 文字列を配列に分割します | SPLIT('data,lake', ',') → ['data', 'lake'] |
| SPLIT_PART | 分割後の特定の部分を返します | SPLIT_PART('data,lake', ',', 2) → 'lake' |
| REGEXP_SPLIT_TO_ARRAY | 指定したパターンを使って文字列をセグメントの配列に分割します | regexp_split_to_array('apple,banana,orange', ','); → '['apple','banana','orange']' |
| REGEXP_SPLIT_TO_TABLE | 指定したパターンを使って文字列をセグメントのテーブルに分割します | regexp_split_to_table('data,lake', ',', 2) |
| 関数 | 説明 | 例 |
|---|
| LPAD | 文字列の左側を埋めて指定した長さにします | LPAD('lake', 8, 'data') → 'datalake' |
| RPAD | 文字列の右側を埋めて指定した長さにします | RPAD('data', 8, 'lake') → 'datalake' |
| REPEAT | 文字列を n 回繰り返します | REPEAT('data', 2) → 'datadata' |
| SPACE | 空白文字からなる文字列を返します | SPACE(4) → ' ' |
| REVERSE | 文字列を逆順にします | REVERSE('datalake') → 'ekalatad' |
文字列のトリミング
| 関数 | 説明 | 例 |
|---|
| TRIM | 先頭と末尾の空白を削除します | TRIM(' datalake ') → 'datalake' |
| TRIM_BOTH | 両端から指定した文字を削除します | TRIM_BOTH('xxdatalakexx', 'x') → 'datalake' |
| TRIM_LEADING | 先頭から指定した文字を削除します | TRIM_LEADING('xxdatalake', 'x') → 'datalake' |
| TRIM_TRAILING | 末尾から指定した文字を削除します | TRIM_TRAILING('datalakexx', 'x') → 'datalake' |
| LTRIM | 先頭の空白を削除します | LTRIM(' datalake') → 'datalake' |
| RTRIM | 末尾の空白を削除します | RTRIM('datalake ') → 'datalake' |
| 関数 | 説明 | 例 |
|---|
| LENGTH | 文字数で文字列の長さを返します | LENGTH('datalake') → 8 |
| CHAR_LENGTH / CHARACTER_LENGTH | 文字数で文字列の長さを返します | CHAR_LENGTH('datalake') → 8 |
| BIT_LENGTH | ビット数で文字列の長さを返します | BIT_LENGTH('datalake') → 64 |
| OCTET_LENGTH | バイト数で文字列の長さを返します | OCTET_LENGTH('datalake') → 8 |
| INSTR | 最初に出現する位置を返します | INSTR('datalake', 'lake') → 5 |
| LOCATE | 最初に出現する位置を返します | LOCATE('lake', 'datalake') → 5 |
| POSITION | 最初に出現する位置を返します | POSITION('lake' IN 'datalake') → 5 |
| STRCMP | 2 つの文字列を比較します | STRCMP('datalake', 'datalake') → 0 |
| JARO_WINKLER | 文字列間の類似度を返します | JARO_WINKLER('datalake', 'datalake') → 1.0 |
大文字・小文字の変換
| 関数 | 説明 | 例 |
|---|
| LOWER / LCASE | 小文字に変換します | LOWER('DataLake') → 'datalake' |
| UPPER / UCASE | 大文字に変換します | UPPER('datalake') → 'DATALAKE' |
パターンマッチング
| 関数 | 説明 | 例 |
|---|
| LIKE | ワイルドカードを使ったパターンマッチング | 'datalake' LIKE 'data%' → true |
| NOT_LIKE | LIKE の否定 | 'datalake' NOT LIKE 'cloud%' → true |
| REGEXP / RLIKE | 正規表現を使ったパターンマッチング | 'datalake' REGEXP '^data' → true |
| NOT_REGEXP / NOT_RLIKE | 正規表現マッチングの否定 | 'datalake' NOT REGEXP '^cloud' → true |
| REGEXP_LIKE | 正規表現に一致するかどうかをブール値で返します | REGEXP_LIKE('datalake', '^data') → true |
| REGEXP_INSTR | 正規表現に一致した位置を返します | REGEXP_INSTR('datalake', 'lake') → 5 |
| REGEXP_SUBSTR | 正規表現に一致する部分文字列を返します | REGEXP_SUBSTR('datalake', 'lake') → 'lake' |
| REGEXP_REPLACE | 正規表現に一致した部分を置換します | REGEXP_REPLACE('datalake', 'lake', 'cloud') → 'datacloud' |
| GLOB | Unix スタイルのパターンマッチング | 'datalake' GLOB 'data*' → true |
エンコードとデコード
| 関数 | 説明 | 例 |
|---|
| ASCII | 先頭文字の ASCII 値を返します | ASCII('D') → 68 |
| ORD | 先頭文字の Unicode コードポイントを返します | ORD('D') → 68 |
| CHAR / CHR | 指定した Unicode コードポイントに対応する文字列を返します | CHAR(68,97,116,97) → 'Data' |
| BIN | 2 進表現を返します | BIN(5) → '101' |
| OCT | 8 進表現を返します | OCT(8) → '10' |
| HEX | 16 進表現を返します | HEX('ABC') → '414243' |
| UNHEX | 16 進数をバイナリに変換します | UNHEX('414243') → 'ABC' |
| TO_BASE64 | base64 にエンコードします | TO_BASE64('datalake') → 'ZGF0YWxha2U=' |
| FROM_BASE64 | base64 からデコードします | FROM_BASE64('ZGF0YWxha2U=') → 'datalake' |
その他
| 関数 | 説明 | 例 |
|---|
| QUOTE | SQL 用に文字列をエスケープします | QUOTE('datalake') → '"datalake"' |
| SOUNDEX | soundex コードを返します | SOUNDEX('datalake') → 'D42' |
| SOUNDSLIKE | soundex 値を比較します | SOUNDSLIKE('datalake', 'datalake') → true |