このトピックでは、文字列関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
次の表に、Simple Log Serviceでサポートされている文字列関数を示します。
関数 | 構文 | 説明 | SQLでサポート | SPLでサポート |
chr( x) | ASCIIコードを文字に変換します。 | √ | √ | |
コードポイント (x) | 文字をASCIIコードに変換します。 | √ | √ | |
concat( x、y ...) | 複数の文字列を1つの文字列に連結します。 | √ | √ | |
from_utf8( x) | バイナリ文字列をUTF-8-encoded文字列にデコードします。 無効なUTF-8シーケンスは、デフォルトの置換文字U + FFFDで置換される。 | √ | √ | |
from_utf8( x, replace_string) | バイナリ文字列をUTF-8エンコード文字列にデコードします。 無効なUTF-8シーケンスはカスタム文字列に置き換えられます。 | √ | √ | |
長さ (x) | 文字列の長さを返します。 | √ | √ | |
levenshtein_distance( x, y) | xとyの間の最小編集距離を返します。 | √ | × | |
下 (x) | 文字列の文字を小文字に変換します。 | √ | √ | |
lpad( x、length、lpad_string) | Leftは、指定した文字を使用して文字列を指定した長さにパディングし、結果の文字列を返します。 | √ | √ | |
ltrim( x) | 文字列の先頭からスペースを削除します。 | √ | √ | |
normalize( x) | NFC正規化フォームを使用して文字列を変換します。 | √ | × | |
位置 (xのsub_string) | 文字列内の指定された部分文字列の位置を返します。 | √ | × | |
replace( x, sub_string) | 文字列から一致した文字を削除します。 | √ | √ | |
replace( x, sub_string, replace_string) | 文字列内の一致した文字を指定した文字に置き換えます。 | √ | √ | |
リバース (x) | 逆の順序で文字列を返します。 | √ | √ | |
rpad( x、length、rpad_string) | 右は、指定した文字を使用して文字列を指定した長さにパディングし、結果の文字列を返します。 | √ | √ | |
rtrim( x) | 文字列の末尾からスペースを削除します。 | √ | √ | |
スプリット (x, delimeter) | 指定された区切り文字を使用して文字列を分割し、部分文字列のセットを返します。 | √ | × | |
スプリット (x、delimeter、limit) | 指定された区切り文字を使用して文字列を分割し、部分文字列のセットを返します。 生成できる部分文字列の数をlimitで指定します。 | √ | × | |
split_part( x, delimeter, part) | 指定された区切り文字を使用して文字列を分割し、指定された位置の部分文字列を返します。 | √ | √ | |
split_to_map( x, delimiter01, delimiter02) | 最初に指定した区切り文字を使用して文字列を分割し、次に2番目に指定した区切り文字を使用して文字列を分割します。 | √ | × | |
strpos( x, sub_string) | 文字列内の指定された部分文字列の位置を返します。 この関数は、position (xのsub_string) 関数に相当します。 | √ | √ | |
substr( x, start) | 文字列内の指定された位置の部分文字列を返します。 | √ | √ | |
substr( x、start、length) | 文字列内の指定された位置の部分文字列を返します。 部分文字列の長さが指定されます。 | √ | √ | |
to_utf8( x) | 文字列をUTF-8表現に変換します。 | √ | √ | |
トリム (x) | 文字列の先頭と末尾からスペースを削除します。 | √ | √ | |
アッパー (x) | 文字列の文字を大文字に変換します。 | √ | √ |
chr関数
chr関数はASCIIコードを文字に変換します。
構文
chr(x)
パラメーター
パラメーター | 説明 |
x | このパラメータの値はASCIIコードです。 |
戻り値のデータ型
varcharタイプ。
例
region
フィールドの値の最初の文字がcで始まるかどうかを確認します。 次のクエリステートメントでは、値99はASCIIコードで、小文字のcを表します。
サンプルフィールド
region:cn-shanghai
クエリ文 (デバッグ)
* | SELECT substr(region, 1, 1) = chr(99)
クエリと分析結果
codepoint関数
コードポイント関数は、文字をASCIIコードに変換します。
構文
codepoint(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
整数型。
例
region
フィールドの値の最初の文字がcで始まるかどうかを確認します。 次のクエリステートメントでは、値99はASCIIコードで、小文字のcを表します。
サンプルフィールド
upstream_status:200
クエリ文 (デバッグ)
* | SELECT codepoint(cast (substr(region, 1, 1) AS char(1))) = 99
クエリと分析結果
concat関数
concat関数は、複数の文字列を1つの文字列に連結します。
構文
concat(x, y...)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
y | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
region
フィールドとrequest_method
フィールドの値を1つの文字列に連結します。
サンプルフィールド
region:cn-shanghai time:14/Jul/2021:02:19:40
クエリ文 (デバッグ)
* | SELECT concat(region, '-', time)
クエリと分析結果
from_utf8関数
from_utf8関数は、バイナリ文字列をUTF-8エンコード文字列にデコードします。
構文
次の構文を使用すると、無効なUTF-8シーケンスがデフォルトの置換文字U + FFFDに置き換えられます。
from_utf8(x)
次の構文を使用すると、無効なUTF-8シーケンスがカスタム文字列に置き換えられます。
from_utf8(x,replace_string)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はバイナリ型です。 |
replace_string | このパラメーターの値は、使用するカスタム文字列です。 1文字またはスペースを指定できます。 |
戻り値のデータ型
varcharタイプ。
例
長さ関数
length関数は、文字列の長さを返します。
構文
length(x)
パラメーター
パラメーター | |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
bigint型。
例
http_user_agent
フィールドの値の長さを計算します。
サンプルフィールド
http_user_agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2
クエリ文 (デバッグ)
* | SELECT length(http_user_agent)
クエリと分析結果
levenshtein_distance関数
levenshtein_distance関数は、2つの文字列間の最小編集距離を返します。
構文
levenshtein_distance(x, y)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
y | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
bigint型。
例
instance_id
フィールドの値とowner_id
フィールドの値の間の最小編集距離を照会します。
サンプルフィールド
instance_id:i-01 owner_id:owner-01
クエリ文 (デバッグ)
* | SELECT levenshtein_distance(owner_id, instance_id)
クエリと分析結果
低い関数
lower関数は、文字列の文字を小文字に変換します。
構文
lower(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
request_method
フィールドの値の文字を小文字に変換します。
サンプルフィールド
request_method:GET
クエリ文 (デバッグ)
* | SELECT lower(request_method)
クエリと分析結果
lpad関数
lpad関数leftは、指定された文字を使用して文字列を指定された長さにパディングし、結果の文字列を返します。
構文
lpad(x, length, lpad_string)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
長さ | このパラメーターの値は、結果文字列の長さを指定する整数です。
|
lpad_string | このパラメーターの値は、文字列のパディングに使用する文字です。 |
戻り値のデータ型
varcharタイプ。
例
instance_id
フィールドの値を10文字にパディングします。 値の長さが10文字未満の場合は、0を使用して値の先頭から値を埋めます。
サンプルフィールド
instance_id:i-01
クエリ文 (デバッグ)
* | SELECT lpad(instance_id, 10, '0')
クエリと分析結果
ltrim関数
ltrim関数は、文字列の先頭からスペースを削除します。
構文
ltrim(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
region
フィールドの値の先頭からスペースを削除します。
サンプルフィールド
region: cn-shanghai
クエリ文 (デバッグ)
* | SELECT ltrim(region)
クエリと分析結果
normalize関数
normalize関数は、NFC正規化フォームを使用して文字列を変換します。
構文
normalize(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
NFC正規化フォームを使用してsch ö n文字列を変換します。
クエリ文 (デバッグ)
* | SELECT normalize('schön')
クエリと分析結果
位置関数
position関数は、文字列内の指定された部分文字列の位置を返します。
構文
position(sub_string in x)
パラメーター
パラメーター | 説明 |
sub_string | このパラメーターの値は、クエリする位置の部分文字列です。 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
整数型。 有効な値は1から始まります。 文字列に指定された部分文字列が含まれていない場合は、0が返されます。
例
region
フィールドの値のcn
部分文字列の位置を照会します。
サンプルフィールド
region:cn-shanghai
クエリ文 (デバッグ)
* | SELECT position('cn' in region)
クエリと分析結果
replace関数
replace関数は、文字列から一致した文字を削除するか、文字列内の一致した文字を指定された文字に置き換えます。
構文
次の構文を使用すると、文字列から一致した文字が削除されます。
replace(x, sub_string)
次の構文を使用すると、文字列内の一致した文字が指定された文字に置き換えられます。
replace(x, sub_string, replace_string)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
sub_string | このパラメーターの値は、一致させる部分文字列です。 |
replace_string | このパラメーターの値は、一致した部分文字列を置き換えるために使用する部分文字列です。 |
戻り値のデータ型
varcharタイプ。
例
逆関数
reverse関数は文字列を逆の順序で返します。
構文
reverse(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
request_method
フィールドの値の文字を反転します。
サンプルフィールド
request_method:GET
クエリ文 (デバッグ)
* | SELECT reverse(request_method)
クエリと分析結果
rpad関数
rpad関数は、指定された文字を使用して文字列を指定された長さに右パディングし、結果の文字列を返します。
構文
rpad(x, length, rpad_string)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
長さ | このパラメーターの値は、結果文字列の長さを指定する整数です。
|
rpad_string | このパラメーターの値は、文字列のパディングに使用する文字です。 |
戻り値のデータ型
varcharタイプ。
例
instance_id
フィールドの値を10文字にパディングします。 値の長さが10文字未満の場合は、0を使用して値の末尾から値を埋めます。
サンプルフィールド
instance_id:i-01
クエリ文 (デバッグ)
* | SELECT rpad(instance_id, 10, '0')
クエリと分析結果
rtrim関数
rtrim関数は、文字列の末尾からスペースを削除します。
構文
rtrim(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
instance_id
フィールドの値の末尾からスペースを削除します。
サンプルフィールド
instance_id:i-01
クエリ文 (デバッグ)
* | SELECT rtrim(instance_id)
クエリと分析結果
スプリット関数
split関数は、指定された区切り文字を使用して文字列を分割し、部分文字列のセットを返します。
構文
次の構文を使用する場合、関数は指定された区切り文字を使用して文字列を分割し、部分文字列のセットを返します。
split(x, delimeter)
次の構文を使用する場合、関数は指定された区切り文字を使用して文字列を分割し、部分文字列のセットを返します。 生成できる部分文字列の数をlimitで指定します。
split(x,delimeter,limit)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
delimeter | このパラメーターの値は、使用する区切り文字です。 |
制限 | このパラメーターの値は0より大きい整数です。 値は、生成できる部分文字列の数を指定します。 |
戻り値のデータ型
配列型。
例
例1: スラッシュ (/) を使用して、
request_uri
フィールドの値を4つの部分文字列に分割し、部分文字列のセットを取得します。サンプルフィールド
request_uri:/request/path-1/file-9
クエリ文 (デバッグ)
* | SELECT split(request_uri, '/')
クエリと分析結果
例2: スラッシュ (/) を使用して、
request_uri
フィールドの値を3つの部分文字列に分割し、部分文字列のセットを取得します。サンプルフィールド
request_uri:/request/path-1/file-9
クエリ文 (デバッグ)
* | SELECT split(request_uri, '/', 3)
クエリと分析結果
split_part関数
split_part関数は、指定された区切り文字を使用して文字列を分割し、指定された位置の部分文字列を返します。
構文
split_part(x, delimeter, part)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
delimeter | このパラメーターの値は、使用する区切り文字です。 |
部分 | このパラメーターの値は0より大きい整数です。 |
戻り値のデータ型
varcharタイプ。
例
疑問符 (?) を使用して、request_uri
フィールドの値を分割し、ファイルパスである最初の部分文字列を取得します。 次に、各パスに対応するリクエストの数を測定します。
サンプルフィールド
request_uri: /request/path-2/file-6?name=value&age=18 request_uri: /request/path-2/file-0?name=value&age=18 request_uri: /request/path-3/file-2?name=value&age=18
クエリ文 (デバッグ)
* | SELECT count(*) AS PV, split_part(request_uri, '?', 1) AS Path GROUP BY Path ORDER BY pv DESC
クエリと分析結果
split_to_map関数
split_to_map関数は、最初に指定された区切り文字を使用して文字列を分割し、次に2番目に指定された区切り文字を使用して文字列を分割します。
構文
split_to_map(x, delimiter01, delimiter02)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
delimeter01 | このパラメーターの値は、使用する区切り文字です。 |
delimeter02 | このパラメーターの値は、使用する区切り文字です。 |
戻り値のデータ型
マップタイプ。
例
コンマ (,) とコロン (:) を使用してtime
フィールドの値を分割し、map型の値を取得します。
サンプルフィールド
time:upstream_response_time:"80", request_time:"40"
クエリ文
* | SELECT split_to_map(time, ',', ':')
クエリと分析結果
strpos関数
strpos関数は、文字列内の指定された部分文字列の位置を返します。 この関数は位置関数に相当します。
構文
strpos(x, sub_string)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
sub_string | このパラメーターの値は、クエリする位置の部分文字列です。 |
戻り値のデータ型
整数型。 有効な値は1から始まります。 文字列に指定された部分文字列が含まれていない場合は、0が返されます。
例
server_protocol
フィールドの値の文字Hの位置を照会します。
クエリ文 (デバッグ)
* | SELECT strpos(server_protocol, 'H')
クエリと分析結果
subst関数
substrum関数は、文字列内の指定された位置にある部分文字列を返します。
構文
次の構文を使用すると、関数は文字列の指定された位置にある部分文字列を返します。
substr(x, start)
次の構文を使用すると、関数は文字列の指定された位置にある部分文字列を返します。 部分文字列の長さが指定されます。
substr(x,start,length)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
start | このパラメーターの値は、部分文字列を抽出する開始位置です。 有効な値は1から始まります。 |
長さ | このパラメーターの値は、部分文字列の長さです。 |
戻り値のデータ型
varcharタイプ。
例
server_protocol
フィールドの値から最初の4文字 (HTTP
) を抽出します。 次に、HTTPプロトコルを使用するリクエストの数を測定します。
サンプルフィールド
server_protocol:HTTP/2.0
クエリ文 (デバッグ)
* | SELECT substr(server_protocol, 1, 4) AS protocol, count(*) AS count GROUP BY server_protocol
クエリと分析結果
to_utf8関数
to_utf8関数は、文字列をUTF-8表現に変換します。
構文
to_utf8(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varbinary型。
例
ログ文字列をUTF-8表現に変換します。
クエリ文 (デバッグ)
* | SELECT to_utf8('log')
クエリと分析結果
トリム関数
トリム関数は、文字列の先頭と末尾からスペースを削除します。
構文
trim(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
instance_id
フィールドの値の先頭と末尾からスペースを削除します。
サンプルフィールド
instance_id: i-01
クエリ文 (デバッグ)
* | SELECT trim(instance_id)
クエリと分析結果
上位関数
upper関数は、文字列の文字を大文字に変換します。
構文
upper(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はvarchar型です。 |
戻り値のデータ型
varcharタイプ。
例
region
フィールドの値の文字を大文字に変換します。
サンプルフィールド
region:cn-shanghai
クエリ文 (デバッグ)
* | SELECT upper(region)
クエリと分析結果