このトピックでは、データ分析機能でサポートされている文字列関数の構文、パラメーター、および例について説明します。
関数 | 説明 |
ASCII コードを文字に変換します。 | |
指定されたすべての文字列を連結し、最終的な文字列を返します。 | |
JSON 文字列から指定された部分文字列を抽出します。 | |
文字列内の指定された部分文字列の位置を返します。 | |
Base64 でエンコードされたデータをデコードします。 | |
文字列の長さを返します。 | |
文字列の長さをバイト単位で返します。 | |
文字列の MD5 値を返します。 | |
文字列の指定された位置にある部分文字列を、指定された部分文字列に置き換えます。 | |
指定されたデリミタで文字列を分割し、指定された位置から別の指定された位置まで始まる部分文字列を返します。 | |
文字列の指定された位置から、指定された長さの部分文字列を返します。 | |
文字列内のすべての大文字を小文字に置き換えます。 | |
文字列内のすべての小文字を大文字に置き換えます。 | |
BOOLEAN、BIGINT、DECIMAL、または DOUBLE 型のデータを STRING 型に変換します。 | |
文字列の左右両側のスペースを削除します。 | |
文字列の左側のスペースを削除します。 | |
文字列の右側のスペースを削除します。 | |
文字列の文字を逆順に返します。 | |
文字列の最初の文字の ASCII コードを返します。 | |
a で指定された文字列の左側に、新しい埋め込み文字列の文字数が len で指定された値に達するまで、b で指定された文字列を埋め込みます。 | |
a で指定された文字列の右側に、新しい埋め込み文字列の文字数が len で指定された値に達するまで、b で指定された文字列を埋め込みます。 | |
文字列内の指定された部分文字列を新しい部分文字列に置き換えます。 | |
入力文字列を application/x-www-form-urlencoded MIME 形式にエンコードします。 | |
application/x-www-form-urlencoded MIME 形式の入力文字列を通常の文字列に変換します。これは url_encoding の逆関数です。 | |
文字列 1 が文字列 2 で終わるかどうかを確認します。 | |
バイナリデータを Base64 エンコードされた文字列に変換します。 |
CHR
構文
STRING CHR(BIGINT ascii)説明
指定された ASCII コードを対応する文字に変換します。
パラメーター
ascii: BIGINT 型の値で、ASCII コードを示します。有効値の範囲:0 ~ 255。入力値がこの範囲外の場合、例外が返されます。入力値が STRING、DOUBLE、または DECIMAL 型の場合、計算前に暗黙的に BIGINT 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。
戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
CONCAT
構文
STRING CONCAT(STRING a, STRING b...)説明
指定されたすべての文字列を連結し、最終的な文字列を返します。
パラメーター
すべてのパラメーターの値は STRING 型です。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。
戻り値の型
STRING 型の値が返されます。入力パラメーターがない場合、または入力パラメーターが NULL の場合、NULL が返されます。
例
CONCAT('ab','c') = 'abc' CONCAT() = NULL CONCAT('a', null, 'b') = NULL
GET_JSON_OBJECT
構文
STRING GET_JSON_OBJECT(STRING json,STRING path)説明
path に基づいて、標準 JSON 文字列から指定された文字列を抽出します。この関数が呼び出されるたびに元のデータが読み取られます。そのため、繰り返し呼び出すとシステムリソースが浪費され、コストが増加する可能性があります。繰り返し呼び出しを防ぐには、ユーザー定義のテーブル値関数(UDTF)と共に
GET_JSON_OBJECT関数を呼び出して、JSON ログデータを変換します。パラメーター
json: 標準
JSON形式の文字列。path: ドル記号($)で始まる文字列で、JSON 文字列内の JSON オブジェクトのパスを記述します。path の詳細については、LanguageManual UDFを参照してください。$: ルートノードを示します。.: 子ノードを示します。[]:[number]は配列の添字を示します。配列はkey[sub1][sub2][sub3]……の形式で表されます。*:[]のワイルドカードを示します。この文字が path パラメーターで使用されている場合、配列全体が返されます。アスタリスク(*)はエスケープできません。
戻り値
json が空または無効な場合、
NULLを返します。json が有効で、指定された
pathが存在する場合、対応する文字列を返します。オブジェクト内に重複キーは表示できません。たとえば、{a:1, a:0} はサポートされていません。サポートされていない場合、文字列の解析に失敗する可能性があります。
絵文字はサポートされていません。
例
例 1:
-- JSON data. {"store": {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} }, "email":"amy@only_for_json_udf_test.net", "owner":"amy" }上記の JSON 文字列からデータを抽出するには、次のステートメントを実行します。
-- 戻り値は amy です。 GET_JSON_OBJECT(json, '$.owner'); -- 戻り値は {"weight":8,"type":"apple"} です。 GET_JSON_OBJECT(json, '$.store.fruit\[0]'); -- 戻り値は null です。 GET_JSON_OBJECT(json, '$.non_exist_key');例 2:
GET_JSON_OBJECT('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]')= "2222" GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]" GET_JSON_OBJECT('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"
INSTR
構文
BIGINT INSTR(STRING str1, STRING str2[, BIGINT start_position[, BIGINT nth_appearance]])説明
文字列
str1内の部分文字列 str2 の位置を返します。パラメーター
: STRING 型の値。部分文字列を検索する文字列を示します。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。: STRING 型の値。検索する部分文字列を示します。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。: BIGINT 型の値。他のデータ型の場合、例外が返されます。str1 内のどの文字から検索を開始するかを示します。デフォルトの開始位置は最初の文字で、1 とマークされます。: BIGINT 型の値。0 より大きい値である必要があります。文字列内に部分文字列が出現する n 回目を示します。n は nth_appearance で指定されます。nth_appearance の値が他のデータ型の場合、または 0 以下の場合、例外が返されます。
戻り値
BIGINT 型の値が返されます。
str1がstr2内に見つからない場合、0 が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
str2 が空の場合、常に一致が成功します。たとえば、
instr(‘abc’, ")の場合は 1 が返されます。
例
INSTR('Tech on the net', 'e') = 2 INSTR('Tech on the net', 'e', 1, 1) = 2 INSTR('Tech on the net', 'e', 1, 2) = 11 INSTR('Tech on the net', 'e', 1, 3) = 14
BASE64_DECODE
構文
base64_decode(STRING str)説明
Base64 エンコードされた文字列をデコードします。
パラメーター
str: STRING 型の値。分割する文字列を示します。入力値が BIGINT、DOUBLE、DECIMAL、TIMESTAMP、または DATE 型の場合、計算前に値が暗黙的に STRING 型に変換されます。入力値が Base64 エンコードされた文字列でない場合、元の文字列が返されます。
戻り値
STRING 型の値が返されます。
LENGTH
構文
BIGINT LENGTH(STRING str)説明
文字列 str の長さを返します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。BIGINT 型の値が返されます。入力パラメーターが NULL の場合、NULL が返されます。入力パラメーターが UTF-8 でエンコードされていない場合、-1 が返されます。
例
LENGTH('hi! China') = 6
LENGTHB
構文
BIGINT LENGTHB(STRING str)説明
文字列 str の長さをバイト単位で返します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。BIGINT 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
LENGTHB('hi! China') = 10
MD5
構文
STRING MD5(STRING value)説明
入力文字列 value の MD5 値を返します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
REGEXP_REPLACE
構文
STRING REGEXP_REPLACE(STRING source, STRING pattern, STRING replace_string[, BIGINT occurrence])説明
replace_STRINGで指定された文字列を使用して、ソース文字列内のoccurrenceで指定された n 番目の出現箇所にある、指定されたpatternに一致する部分文字列を置き換え、結果を返します。パラメーター
source: 置き換えられる文字列。pattern: STRING 型の定数。一致させるパターンを示します。
patternが空の文字列の場合、例外が返されます。replace_string: STRING 型の値。指定された
patternに一致する部分文字列に置き換えられる文字列です。occurrence: BIGINT 型の定数。0 以上である必要があります。replace_stringが n 番目の出現箇所にある一致する部分文字列に置き換えられることを示します。値 0 は、一致するすべての部分文字列が置き換えられることを示します。値が他の型の場合、または 0 未満の場合、例外が返されます。デフォルト値:0。
戻り値
STRING 型の値が返されます。参照されるグループが存在しない場合、部分文字列は置き換えられません。
入力パラメーターが NULL に設定されている場合、NULL が返されます。
replace_string が null に設定されていて、部分文字列が指定された
patternに一致する場合、NULL が返されます。replace_string が null に設定されているが、部分文字列が指定された
patternに一致しない場合、元の文字列が返されます。
例
regexp_replace("123.456.7890", "([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})", "(\\1)\\2-\\3", 0) = "(123)456-7890" regexp_replace("abcd", "(.)", "\\1 ", 0) = "a b c d " regexp_replace("abcd", "(.)", "\\1 ", 1) = "a bcd" regexp_replace("abcd", "(.)", "\\2", 1) = "abcd" -- パターンには 1 つのグループのみが定義されており、参照するグループは存在しません。 -- この関数はこの方法で使用しないことをお勧めします。存在しないグループを参照した結果は定義されていません。 regexp_replace("abcd", "(.*)(.)$", "\\2", 0) = "d" regexp_replace("abcd", "a", "\\1", 0) = "bcd" -- pattern に文字クラスは定義されていません。\1 は存在しない文字クラスを参照しています。 -- この関数はこの方法で使用しないことをお勧めします。存在しないグループを参照した結果は定義されていません。
SPLIT_PART
構文
STRING SPLIT_PART(STRING str, STRING separator, BIGINT start[, BIGINT end])説明
strで指定された文字列を、separatorで指定されたデリミタで分割し、startで指定された位置からendで指定された別の位置まで始まる部分文字列を返します。パラメーター
: STRING 型の値。分割する文字列を示します。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。separator: STRING 型の定数。分割に使用されるデリミタです。文字または文字列を指定できます。他のデータ型の場合、例外が返されます。: BIGINT 型の定数。0 より大きい値である必要があります。値が定数でない場合、または他のデータ型の場合、例外が返されます。このパラメーターは、返される部分文字列の開始位置を指定します。位置は 1 から始まります。end が設定されていない場合、startで指定された位置にある部分文字列が返されます。end: BIGINT 型の定数。
startの値以上である必要があります。このパラメーターは、返されるセグメントの終了位置を指定します。値が定数でない場合、または他のデータ型の場合、例外が返されます。end が設定されていない場合、最後の部分文字列が返されます。
戻り値
STRING 型の値が返されます。
startをセグメント数より大きい値に設定すると、空の文字列が返されます。たとえば、文字列に 6 つのセグメントがあるが、startを 6 より大きい値に設定すると、空の文字列が返されます。separatorの値がstrで指定された文字列に存在せず、startを 1 に設定すると、strで指定された文字列が返されます。str の値が空の文字列の場合、空の文字列が返されます。separatorの値が空の文字列の場合、strで指定された文字列が返されます。end をセグメント数より大きい値に設定すると、すべてのセグメントが返されます。
入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
SPLIT_PART('a,b,c,d', ',', 1) = 'a' SPLIT_PART('a,b,c,d', ',', 1, 2) = 'a,b' SPLIT_PART('a,b,c,d', ',', 10) = ''
SUBSTR
構文
STRING SUBSTR(STRING str, BIGINT start_position[, BIGINT length])説明
str 内の
start_positionで指定された位置から始まり、length で指定された長さの部分文字列を返します。パラメーター
str: STRING 型の値。入力値が BIGINT、DECIMAL、DOUBLE、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。入力値が他のデータ型の場合、例外が返されます。start_position: BIGINT 型の値。デフォルト値:1。start_positionを 0 に設定すると、空の文字列が返されます。start_positionを負の値に設定すると、開始位置は文字列の最後の文字から逆算されます。たとえば、-1 は最後の文字、-2 は最後から 2 番目の文字、-3 は最後から 3 番目の文字を示します。値が他のデータ型の場合、例外が返されます。: BIGINT 型の値。部分文字列の長さを示します。値は 0 より大きくなります。値が他のデータ型の場合、または 0 以下の場合、例外が返されます。
戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
説明length が設定されていない場合、start_position で指定された位置から str で指定された文字列の末尾までの部分文字列が返されます。
例
SUBSTR("abc", 2) = "bc" SUBSTR("abc", 2, 1) = "b" SUBSTR("abc",-2,2) = "bc" SUBSTR("abc",-3) = "abc"
TOLOWER
構文
STRING TOLOWER(STRING source)説明
文字列 source を小文字の文字列に変換します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
tolower("aBcd") = "abcd" tolower("HAHACd") = "hahacd"
TOUPPER
構文
STRING TOUPPER(STRING source)説明
source で指定された文字列を大文字の文字列に変換します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外が返されます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
toupper("aBcd") = "ABCD" toupper("HahaCd") = "HAHACD"
TO_CHAR
構文
STRING TO_CHAR(BOOLEAN value) STRING TO_CHAR(BIGINT value) STRING TO_CHAR(DOUBLE value) STRING TO_CHAR(DECIMAL value)説明
BOOLEAN、BIGINT、DECIMAL、または DOUBLE 型のデータを STRING 型に変換します。
パラメーター
: 入力値は、BOOLEAN、BIGINT、DECIMAL、または DOUBLE 型のいずれかになります。値が他のデータ型の場合、例外が返されます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
TO_CHAR(123) = '123' TO_CHAR(true) = 'TRUE' TO_CHAR(1.23) = '1.23' TO_CHAR(null) = NULL
TRIM
構文
STRING TRIM(STRING str)説明
str で指定された文字列の左右両側のスペースを削除します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
LTRIM(' abc ')="abc";
LTRIM
構文
STRING LTRIM(STRING str)説明
str で指定された文字列の左側のスペースを削除します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
LTRIM(' abc ')="abc ";
RTRIM
構文
STRING RTRIM(STRING str)説明
str で指定された文字列の右側のスペースを削除します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
RTRIM('a abc ')="a abc";
REVERSE
構文
STRING REVERSE(STRING str)説明
逆順の文字列を返します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
REVERSE('abcedfg')="gfdecba"
ASCII
構文
BIGINT ASCII(STRING str)説明
str で指定された文字列の最初の文字の ASCII コードを返します。
パラメーター
: STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。戻り値
BIGINT 型の値が返されます。
例
-- 戻り値は 97 です。 ASCII('abcde')
LPAD
構文
STRING LPAD(STRING a, INT len, STRING b)説明
aで指定された文字列の左側に、新しい埋め込み文字列の文字数が len で指定された値に達するまで、b で指定された文字列を埋め込みます。パラメーター
: INT 型の値。a および
b: STRING 型の値。
戻り値
STRING 型の値が返されます。
lenの値がaで指定された文字列の文字数より小さい場合、lenで指定された長さの部分文字列が文字列の左側から切り捨てられ、返されます。len を 0 に設定すると、NULL が返されます。例
lpad('abcdefgh',10,'12')='12abcdefgh' lpad('abcdefgh',5,'12')='abcde' lpad('abcdefgh',0,'12') -- NULL を返します。
RPAD
構文
STRING RPAD(STRING a, INT len, STRING b)説明
文字列
aの右側に、新しい埋め込み文字列の文字数が len で指定された値に達するまで、文字列 b を埋め込みます。パラメーター
: INT 型の値。a および
bなどのパラメーター: STRING 型の値。
戻り値
STRING 型の値が返されます。
lenの値がaで指定された文字列の文字数より小さい場合、lenで指定された長さの部分文字列が文字列の左側から切り捨てられ、返されます。len。lenの値が 0 の場合、NULL が返されます。例
rpad('abcdefgh',10,'12')='abcdefgh12' rpad('abcdefgh',5,'12')='abcde' rpad('abcdefgh',0,'12') -- NULL を返します。
REPLACE
構文
STRING REPLACE(STRING a, STRING OLD, STRING NEW)説明
目的: 文字列 a の文字列 OLD と完全に同じ部分を文字列 NEW に置き換え、文字列 a を返します。
パラメーター
すべてのパラメーターの値は STRING 型です。
戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
REPLACE('ababab','abab','12')='12ab' REPLACE('ababab','cdf','123')='ababab' REPLACE('123abab456ab',null,'abab')=null
URL_ENCODE
構文
STRING URL_ENCODE(STRING input[, STRING encoding])説明
入力文字列を
application/x-www-form-urlencoded MIME形式にエンコードし、エンコードされた文字列を返します。すべての文字は変更されません。
ピリオド(.)、ハイフン(-)、アスタリスク(*)、およびアンダースコア(_)は変更されません。
スペースはプラス記号(+)に変換されます。
その他の文字は、
encodingで指定された形式に基づいてバイト値に変換されます。次に、各バイト値は%xy形式で表されます。ここで、xyは文字値の 16 進数表現です。
パラメーター
: デコードする文字列。: エンコード形式。有効な値は GBK と UTF-8 です。このパラメーターを設定しない場合、デフォルト値の UTF-8 が使用されます。
戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
URL_ENCODE('Example for URL_ENCODE:// (fdsf)') = "%E7%A4%BA%E4%BE%8Bfor+URL_ENCODE%3A%2F%2F+%28fdsf%29" URL_ENCODE('Example for URL_ENCODE:// dsf(fasfs)', 'GBK') = "Example+for+URL_ENCODE+%3A%2F%2F+dsf%28fasfs%29"
URL_DECODE
構文
STRING URL_DECODE(STRING input[, STRING encoding])説明
application/x-www-form-urlencoded MIME形式の入力文字列を通常の文字列に変換します。これはURL_ENCODEの逆関数です。すべての文字は変更されません。
ピリオド(.)、ハイフン(-)、アスタリスク(*)、およびアンダースコア(_)は変更されません。
プラス記号(+)はスペースに変換されます。
%xy形式のシーケンスはバイト値に変換されます。連続するバイト値は、encodingの値に基づいて関連する文字列にデコードされます。その他の文字は変更されません。
関数の戻り値は UTF-8 でエンコードされた文字列です。
パラメーター
: デコードする文字列。: エンコード形式。有効な値は GBK と UTF-8 です。このパラメーターを指定しない場合、デフォルト値の UTF-8 が使用されます。
戻り値
STRING 型の値が返されます。入力パラメーターが NULL に設定されている場合、NULL が返されます。
例
URL_DECODE('%E7%A4%BA%E4%BE%8Bfor+URL_DECODE%3A%2F%2F+%28fdsf%29')= "Example for URL_DECODE:// (fdsf)" URL_DECODE('Example+for+URL_DECODE+%3A%2F%2F+dsf%28fasfs%29', 'GBK') = "Example for URL_DECODE:// dsf(fasfs)"
ENDSWITH
構文
BOOLEAN ENDSWITH(STRING input, STRING suffix)説明
入力文字列が で指定された文字列で終わるかどうかを確認します。
パラメーター
すべてのパラメーターの値は STRING 型です。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、例外がスローされます。
戻り値
BOOLEAN 型の値が返されます。
TO_BASE64
構文
TO_BASE64(BINARY bin)説明
バイナリデータを Base64 エンコードされた文字列に変換します。
パラメーター
入力パラメーターの値は BINARY 型です。
戻り値
Base64 エンコードされた文字列。