ここでは、MaxCompute で使用できる CHAR_MATCHCOUNT、CHR、CONCAT、GET_JSON_OBJECT、INSTR、IS_ENCODING などの文字列関数について説明します。

CHAR_MATCHCOUNT

コマンド形式:
bigint char_matchcount(string str1, string str2)

使用法:

str1 内の各文字が str2 内で複製される合計回数を計算します。

パラメーターの説明:
  • str1、str2: String 型で、有効な UTF-8 文字列でなければなりません。 照合処理中に無効な文字が検出されると、負の値が返されます。
  • 戻り値: Bigint 型。入力値に NULL があると、NULLが返されます。
例:
char_matchcount('abd','aabc') = 2
-- str1 内の 2 つの文字列 'a' と 'b' が str2 に出現

CHR

コマンド形式:
string chr(bigint ascii)

使用法:

指定した ASCIIコード「ascii」を文字に変換します。

パラメーターの説明:
  • ascii: Bigint 型の ASCII 値。 入力値が「String」型または「Double」型の場合、暗黙の変換によって「Bigint」型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • 戻り値: String 型。 パラメータ値の範囲は、0~255 です。 この範囲を超えると、例外が発生します。 入力値が NULL の場合は、NULL が返されます。

CONCAT

コマンド形式:
string concat(string a, string b...)

使用法:

すべての文字列を接続した結果を戻します。

パラメーターの説明:
  • a, 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)

使用法:

標準の json 文字列では、指定された文字列がパスに従って抽出されます。

パラメーターの説明:
  • json: String 型で、標準の json 形式の文字列です。
  • path: String 型で、ドル記号 ($) で始まる json のパスを表す文字列です。 新規関数の実装については、「JsonPath」をご参照ください。
    • $: ルートオブジェクト
    • 。 : 子演算子
    • []: 配列の添字演算子
    • *: []のワイルドカード
  • String: String 型が返されます。
  • json が NULL または無効な json 形式の場合は、NULL が返されます。
  • path が Null または無効 (json に存在しない) の場合、NULL が返されます。
  • json が有効で path も存在する場合は、対応する文字列が返されます。
例:
+----+
json
+----+
{"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 オブジェクト内の情報を抽出するには、次の クエリ処理を実行します。
odps> SELECT get_json_object(src_json.json, '$.owner') FROM src_json;
amy
odps> SELECT get_json_object(src_json.json, '$.store.fruit\[0]') FROM src_json;
{"weight":8,"type":"apple"} 
odps> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;
NULL
例:
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]])

使用法:

部分文字列 str2 が str1 のどこにあるかを計算します。

パラメーターの説明:
  • str1: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • str2: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • start_position: Bigint 型です。他のデータ型の場合は、例外が発生します。 このパラメータ―は、str1 のどの文字から検索を開始する必要があるかを示します。デフォルトの開始位置は、最初の文字位置 1 です。 0 未満の場合は、エラーが発生します。
  • nth_appearance: Bigint型 (0より大きい) で、文字列中の部分文字列の 2 番目に一致する位置を表します。 チェーンのデータ型が異なる場合、または 0 以下の場合、例外が発生します。
  • 戻り値: Bigint 型。
  • str2 が str1 で検出されない場合は、0 が返されます。-
  • いずれかの入力パラメータ値が NULL の場合、NULL が返されます。
  • str2 が NULL で常に一致する場合、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

IS_ENCODING

コマンド形式:
boolean is_encoding(string str, string from_encoding, string to_encoding)

使用法:

指定した文字セット「from_encoding」から文字セット 「to_encoding」に入力文字列「str」を変更できるかどうかを判断します。 入力値が文字化けしているかを判断するために使用できます。 一般的な使い方では、「from_encoding」を 「utf-8」に、「'to_encoding」を「gbk」に設定します。

パラメーターの説明:
  • str: String 型。入力値が NULL の場合は NULL が返されます。 空の文字列は、任意の文字セットに属していると見なすことができます。
  • from_encoding、to_encoding: String 型で転送元、転送先の文字セットです。 入力値が NULL の場合は、NULL が返されます。
  • 戻り値: Boolean 型。 「str」が正常に変換できる場合は、true が返されます。そうでない場合は、false が返されます。
例:
is_encoding('test', 'utf-8', 'gbk') = true
is_encoding('test', 'utf-8', 'gbk') = true
-- これら 2 つの繁体字は、中国の GBK 語グループです。
is_encoding('test', 'utf-8', 'gb2312') = false
-- ‘GB2312’ の書記素一覧には、これら 2 つの繁体字が含まれていません。

KEYVALUE

コマンド形式:
KEYVALUE(STRING srcStr,STRING split1,STRING split2, STRING key)
KEYVALUE(STRING srcStr,STRING key) //split1 = ";",split2 = ":"

使用法:

split1 で ‘srcStr’ を ‘key-value’ のペアに分割し、split2 で ‘key-value’ のペアを分割します。 キーに対応する値を取得します。

パラメーターの説明:
  • srcStr: 分割するソース文字列です。
  • key: n 番目の文字列を返すように指定します。 ソース文字列が「split1」と「split2」で分割された後、「key」に指定した値に従って、対応する値が返されます。
  • split1、split2:「srcStr」を分割するための区切り文字として使用される文字列です。 これら 2 つのパラメータを式で指定しない場合、「split1」のデフォルト値は「;」、「split2」のデフォルト値は「:」になります。 split1 によって分割され、かつ split2 が複数ある文字列の場合、戻り結果は定義されません。
戻り値:
  • String 型。
  • 「split1」または「split2」が NULL の場合は、NULL が返されます。
  • 「scrStr」と「key」が NULL の場合、または「key」と一致しない場合は NULL が返されます。
  • 複数の「Key-Value」が一致する場合は、最初に一致したキーに対応する値が返されます。
例1:
keyvalue('0:1\;1:2', 1) = '2'
				
ソース文字列は、「0:1\;1:2」です。 split1 と split2 が指定されていないため、デフォルトの split1 は「;」で、split2 は「:」です。

split1 の分割後、キーと値のペアは 0:1\,1:2 です。

split2 splitの後は、次のようになります。
0 1/  
1 2
1 に対応するキーの値 (2) が返されます。
例 2:
keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf") = "21910" value:21910.
ソース文字列は次のとおりです。
“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”
split1 '\;' に従って分割された後に、分割から派生したキーと値の組み合わせは、以下のとおりです。
decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0 
分割後、split2 ":" に従うと、結果は次のようになります。
decreaseStore 1  
 xcard 1  
 isB2C 1  
 tf 21910  
 cart 1  
 shipping 2  
 pf 0  
 market shoes  
 instPayAmount 0

キーパラメータの値は「tf」になります。対応する値パラメータの戻り値は、21910です。

LENGTH

コマンド形式:
bigint length(string str)

使用法:

文字列の長さを返します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • 戻り値: Bigint 型。 「str」が NULL の場合、NULL が返されます。 「str」が UTF-8 以外のコーディング形式の場合、-1 が返されます。
例:
length('hi! China') = 6

LENGTHB

コマンド形式:
bigint lengthb(string str)

使用法:

「str」の長さが返されます。単位はバイトです。

パラメーターの説明:

  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • 戻り値: Bigint 型。 「str」が NULL の場合、NULL が返されます。
例:
lengthb('hi! 中国') = 10

MD5

コマンド形式:
string md5(string value)

使用法:

入力文字列の MD5 値を計算します。

パラメーターの説明:

  • value: String型。 入力値が Bigint型、Double型、Decimal型、Datetime 型の場合、計算前に暗黙的に String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。 入力値が NULL の場合は、NULL が返されます。
  • 戻り値: String 型。

REGEXP_EXTRACT

コマンド形式:
string regexp_extract(string source, string pattern[, bigint occurrence])

使用法:

パターンに従って文字列ソースを分割し (正規表現の規則) 、出現 (n番目) グループの文字を返します。

パラメーターの説明:
  • source: String 型。検索対象の文字列です。
  • pattern: String 型の定数です。 pattern が NULL 文字列の場合は、例外が発生します。 「group」が pattern で指定されていない場合も、例外が発生します。
  • Occurrence: Bigint 型の定数で、0 以上にする必要があります。 それ以外のデータ型、または 0 より小さい場合、例外が発生します。 このパラメータを指定しない場合、デフォルト値は 1 になります。これは、最初のグループを返すことを示します。 「Occurrence」が 0 の場合、「pattern」全体を満たす部分文字列が返されます。
  • 戻り値: String 型。 入力値に NULL がある場合は、NULL が返されます。
例:
regexp_extract('foothebar', 'foo(. *?)( bar)', 1) = the
regexp_extract('foothebar', 'foo(. *?)( bar)', 2) = bar
regexp_extract('foothebar', 'foo(. *?)( bar)', 0) = foothebar
regexp_extract('8d99d8', '8d(\\d+)d8') = 99
-- 標準 SQL が MaxCompute 上で送信された場合、2 つの "\" をシフト文字として使用する必要があります。
regexp_extract('foothebar', 'foothebar')
-- 例外が発生します。‘pattern’ に ‘group’ が指定されていません。

REGEXP_INSTR

関数の定義
bigint regexp_instr(string source, string pattern[,
bigint start_position[, bigint nth_occurrence[, bigint return_option]]])

使用法:

部分文字列の開始位置や終了位置を返します。これは、start_position と nth_occurrence のソースと pattern が一致します。 入力パラメータが NULL の場合、NULL を返します。

パラメーターの説明:
  • source: String 型で、検索対象です。
  • pattern: String 型の定数です。 「pattern」が NULL の場合、例外が発生します。
  • start_position: Bigint 型の定数で、検索の開始位置です。 指定しない場合、デフォルト値は 1 です。 Bigint 以外のデータ型の場合、または入力値が 0 以下の場合は、例外が発生します。
  • nth_occurrence: Bigint 型の定数です。 指定しない場合、デフォルト値は 1 です。 検索すると、最初の位置に表示されます。 入力値が 0 以下の場合、または Bigint 以外のデータ型の場合、例外が発生します。
  • return_option: Bigint 型の定数です。 値は 0 または 1 です。 それ以外のデータ型、または無効な値の 場合、例外が発生します。 0 は一致した値の開始位置を返すことを示します。 1 は一致した値の終了位置を返すことを示します。
  • Return value: Bigint 型。return_option で指定したソース内の一致した部分文字列の開始位置または終了位置です。
例:
regexp_instr("i love www.taobao.com", "o[[:alpha:]]{1}", 3, 2) = 14

REGEXP_REPLACE

コマンド形式:
string regexp_replace(string source, string pattern, string replace_string[, bigint occurrence])

使用法:

n 回目の出現で 'pattern'と一致した source の部分文字列を指定された文字列 'replace_string' に置き換えてから戻ります。

パラメーターの説明:
  • source: String 型。置換対象の文字列です。
  • pattern: String 型の定数で、 照合するパターンです。 入力値が NULL の場合、例外が発生します。
  • replace_string: String 型。マッチしたパターンを置き換えた後の文字列です。
  • Occurrence: Bigint 型の定数で、0 以上にする必要があります。 n 番目のマッチングを replace_string に置き換えることを示します。 0 の場合、一致したすべての部分文字列が置き換えられたことを示します。 それ以外のデータ型、または 0 より小さい場合、例外が発生します。 デフォルトは 0 になります。
  • 戻り値: String 型。 存在しないグループを参照するときは、文字列を置き換えないでください。 source、pattern、occurrence パラメータに NULL が入力されると、NULL が返されます。replace_string が NULL でパターンが一致しない場合、NULL が返されます。replace_string が NULL でパターンが一致する場合は、元の文字列が返されます。
参照グループが存在しない場合は、未定義と見なされます。
例:
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"
-- pattern にはグループのみが定義されていて、参照先の 2 番目のグループは存在しません。
-- これは回避してください。 存在しないグループの参照結果は定義されていません。
regexp_replace("abcd", "(. *)(.)$", "\\2", 0) = "d"
regexp_replace("abcd", "a", "\\1", 0) = "bcd"
-- pattern にグループ定義が存在しないので、'\1' は存在しないグループを参照します。
-- これは回避してください。 存在しないグループの参照結果は定義されていません。

REGEXP_SUBSTR

コマンド形式:
string regexp_substr(string source, string pattern[, bigint start_position[, bigint nth_occurrence]])

使用法:

start_position から検索を開始し、指定されたパターンと n 回目に一致する source 内の部分文字列を見つけます。

パラメーターの説明:
  • source: String 型で、検索対象の文字列です。
  • pattern: String 型の定数で、 照合するパターンです。 入力値が NULL の場合、例外が発生します。
  • start_position: Bigint 型の定数で、0 より大きくなければなりません。 Bigint 以外のデータ型の場合、または 0 以下の場合、例外が発生します。 指定しない場合、デフォルト値は 1 です。これは、照合が source の最初の文字から始まることを示します。 指定しない場合、デフォルト値は 1 です。 これは、照合が source の最初の文字から始まることを示します。
  • nth_occurrence: Bigint 型の定数で、0 より大きくなければなりません。 指定しない場合、デフォルト値は 1 です。 これは、戻される部分文字列が、最初に一致した値 であることを示します。 指定しない場合、デフォルト値は 1 です。 これは、戻される部分文字列が、最初に一致した値 であることを示します。
  • 戻り値: String 型。 入力値に NULL がある場合は、NULL が返されます。 一致するレコードが存在しない場合は、NULLが返されます。
例:
regexp_substr ("I love aliyun very much", "a[[:alpha:]]{5}") = "aliyun"
regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) = " have"
regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2) = "2"

REGEXP_COUNT

コマンド形式:
bigint regexp_count(string source, string pattern[, bigint start_position])

使用法:

source 内の start_position から始まる、部分文字列が指定したパターンと一致する回数をカウントします。

パラメーターの説明:
  • source: String 型で、検索対象の文字列です。 String 型以外の場合、例外が発生します。
  • Pattern: String 型の定数で、照合するパターンです。 入力値が NULL の文字列の場合、または String 型以外のデータ型の場合は、例外が発生します。
  • start_position: Bigint 型の定数で、0 より大きくなければなりません。 Bigint 以外のデータ型の場合、または入力値が 0 以下の場合は、例外が発生します。 指定しない場合、デフォルト値は 1 です。これは、照合が source の最初の文字から始まることを示します。
  • 戻り値: Bigint 型になります。 一致するものがない場合は、0 が返されます。 いずれかの入力パラメータ値が NULL の場合、NULL が返されます。
例:
regexp_count('abababc', 'a.c') = 1
regexp_count('abcde', '[[:alpha:]]{2}', 3) = 1

SPLIT_PART

コマンド形式:
string split_part(string str, string separator, bigint start[, bigint end])

使用法:

区切り文字に従って文字列 str を分割し、n 番目の開始部分から n 番目の終了部分までの部分文字列を返します。

パラメーターの説明:
  • str: String 型で、分割される文字列です。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • separator: String 型 の定数で、文字列を分割するために使用する区切り文字です。 文字でも文字列でも構いません。 入力値が他のデータ型の場合は、例外が発生します。
  • start: Bigint 型の定数で、0 より大きくなければなりません。 定数でない場合、または Bigint 以外のデータ型の場合、例外が発生します。 戻り部分の開始番号 (1から開始) を示します。 end が指定されていない場合は、「start」で指定した部分が返されます。
  • end': Bigint 型の定数で、「start」以上にする必要があります。そうでなければ、例外が発生します。 戻される部分の終了番号を示します。 定数でない場合、または Bigint 以外のデータ型の場合、例外が発生します。 最後の部分を示しているので、省略できます。
戻り値: String 型。 いずれかの入力パラメータ値が NULL の場合、NULL が返されます。 separator が空の文字列の場合、ソース文字列 str が返されます。
  • 「delimiter」が str に存在しない場合は、 「start」を1として指定し、str 全体が返されます。 入力値が空の文字列の場合、出力値は空の文字列になります。
  • 開始値が分割後の部分数よりも大きい場合、たとえば、分割は6 つに分割され、「start」の値が 6 より大きい場合、空の文字列が返されます。
例:
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])

使用法:

start_positionから「str」の部分文字列を指定した長さ返します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 入力値が他のデータ型の場合は、例外が発生します。
  • start_position: Bigint 型で、1 から始まります。 start_position が 0 の場合、空の文字列が返されます。start_position が負の場合、開始位置は文字列の末尾から逆方向に数えられ、最後の文字は -1、その直前の数は -2、-3 などとなります。 Bigint 型以外の場合、例外が発生します。
  • length: Bigint 型で、0 より大きくなければなりません。 それ以外のデータ型、または 0 より小さい場合、例外が発生します。 このパラメータは、子文字列の長さを示します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
length を省略すると、最初から最後までの部分文字列が返されます。
例:
substr("abc", 2) = "bc"
substr("abc", 2, 1) = "b"
substr("abc",-2,2)="bc"
substr("abc",-3)="abc"

SUBSTRING

コマンド形式:
string  substring(string|binary str, int start_position[, int length])

使用法:

start_positionから「str」の指定した長さの部分文字列を返します。

パラメーターの説明:
  • str: String 型または Binary 型です。それ以外のデータ型の場合、NULL が返されるか、例外が発生します。
  • start_position: 1 から始まる Int 型です。 start_position が 0 の場合、空の文字列が返されます。start_position が負の場合、開始位置は文字列の末尾から逆方向に数えられ、最後の文字は -1、その直前の数は -2、-3 などとなります。 Int 型以外の場合、例外が発生します。
  • length: Bigint 型で、0 より大きくなければなりません。 それ以外のデータ型、または 0 より小さい場合、例外が発生します。 このパラメータは、子文字列の長さを示します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
length を省略すると、最初から最後までの部分文字列が返されます。
:
substring('abc', 2) = 'bc'
substring('abc', 2, 1) ='"b'
substring('abc',-2,2)='bc'
substring('abc',-3,2)='ab'
substring(BIN(2345),2,3)='001'

TOLOWER

コマンド形式:
string tolower(string source)

使用法:

英語の文字列ソースに対応する小文字の文字列を入力 します。

パラメーターの説明:
  • source: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 他のデータ型の場合は、例外が発生します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
例:
tolower("aBcd") = "abcd"
tolower("Haha Cd") = "haha cd"

TOUPPER

コマンド形式:
string toupper(string source)

使用法:

英語の文字列「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 型、Double 型を対応するString 型に変換します。

パラメーターの説明:
  • Value: Boolean 型、Bigint 型、Double 型を指定できます。 それ以外のデータ型の場合、例外が発生します。 Datetime 型の形式に出力する場合は、同じ名前の別の関数「TO_CHAR」をご参照ください。
  • 戻り値: 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 の左スペースと右スペースを削除します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合、例外が発生します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。

LTRIM

コマンド形式:
string ltrim(string str)

使用法:

入力文字列 str の左側のスペースを削除します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合、例外が発生します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
例:
select ltrim(' abc ') from dual;  
Returns: 
+-----+
| _c0 |
+-----+
| abc |
+-----+

RTRIM

コマンド形式:
string rtrim(string str)

使用法:

入力文字列 str の右側のスペースを削除します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合は、例外が発生します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
例:
select rtrim('a abc ') from dual; 
Returns:  
+-----+
| _c0 |
+-----+
| a abc |
+-----+

REVERSE

コマンド形式:
STRING REVERSE(string str)

使用法:

逆順の文字列を返します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合は、例外が発生します。
  • 戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。
例:
select reverse('abcedfg') from dual;
Returns: 
+-----+
| _c0 |
+-----+
| gfdecba |
+-----+

SPACE

コマンド形式:
STRING SPACE(bigint n)

使用法:

長さ n の文字列を返すスペース文字列関数です。

パラメーターの説明:
  • n: Bigint 型。長さは 2 MB を超えることはできません。 入力値が NULL の場合、例外が発生します。
  • 戻り値: String 型。
例:
select length(space(10)) from dual; ---- 10 を戻します。 
select space(400000000000) from dual; ----エラー。長さが 2 MB を超えています。

REPEAT

コマンド形式:
STRING REPEAT(string str, bigint n)

使用法:

n 回繰り返される str 文字列を返します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合は、例外が発生します。
  • n: Bigint 型。 長さは 2 MB を超えることはできません。 入力値が NULL の場合、例外が発生します。
  • 戻り値: String 型。
例:
select repeat('abc',5) from lxw_dual; 
Returns:abcabcabcabcabc

ASCII

コマンド形式:
Bigint ASCII(string str)

使用法:

str の最初の文字の ascii を返します。

パラメーターの説明:
  • str: String 型。 入力値が Bigint 型、Double 型、Decimal 型、Datetime 型の場合、暗黙の変換によって String 型に変換されます。 それ以外のデータ型の場合は、例外が発生します。
  • 戻り値: Bigint 型。
例:
select ascii('abcde') from dual;
戻り値 : 97

Maxcomputerte2.0 拡張機能

MaxCompute 2.0 へのアップグレードに伴い、いくつかの算術関数が追加されました。 新規関数で新規データ型を使用する場合は、新規関数の SQL 文を指定する前に、次の set 文を追加する必要があります。
set odps.sql.type.system.odps2=true;
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

拡張された関数および拡張された文字列関数は、次のとおりです。

CONCAT_WS

コマンド形式:
string concat_ws(string SEP, string a, string b...)
string concat_ws(string SEP, array)
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

パラメータ内のすべての文字列を指定した区切り文字で接続して連結します。

パラメーターの説明:
  • SEP: String 型の区切り文字です。 指定しないと、例外が返されます。

戻り値:

String 型。 パラメータが存在しない場合、またはパラメータが NULL の場合は、NULL が返されます。

例:
concat_ws(':','name','hanmeimei')='name:hanmeimei'
concat_ws(':','avg',null,'34')=null

LPAD

コマンド形式:
string lpad(string a, int len, string b)
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

文字列 b を使用して、文字列 a を len で指定した位置の左に挿入します。

パラメーターの説明:
  • len: Int 型の整数です。
  • a/b…: String 型。

戻り値:

String 型。 lenが a の桁数よりも小さい場合、a が左から切り捨てられ、len で指定された桁数の文字列が取得されます。 len が 0 の場合、空が返されます。

例:
lpad('abcdefgh',10,'12')='12abcdefgh'
lpad('abcdefgh',5,'12')='abcde'
lpad('abcdefgh',0,'12') Returns a blank result

RPAD

コマンド形式:
string rpad(string a, int len, string b)
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

文字列 b を使用して、文字列 a を len で指定した位置の右に挿入します。

関数 set odps.sql.type.system.odps2 = true を使用する SQL 文の前に set odps 文を追加する必要があります。そうしないと、エラーが報告されます。

パラメーターの説明:
  • len: Int 型の整数。
  • a/b…: String 型。

戻り値:

String 型。 len が a の桁数よりも小さい場合、a が左から切り捨てられ、len で指定された桁数の文字列が取得されます。 len が 0 の場合、空が返されます。

例:
rpad('abcdefgh',10,'12')='abcdefgh12'
rpad('abcdefgh',5,'12')='abcde'
rpad('abcdefgh',0,'12') Returns a blank result

REPLACE

コマンド形式:
string replace(string a, string OLD, string NEW)
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

文字列 a の string OLD と完全に一致する部分を string NEW に置き換えて、文字列 a を返します。

パラメーターの説明:

パラメータはすべて String 型です。

戻り値:

String 型。 入力値が NULL の場合は、NULL が返されます。

例:
replace('ababab','abab','12')='12ab'
replace('ababab','cdf','123')='ababab'
replace('123abab456ab',null,'abab')=null

SOUNDEX

コマンド形式:
string soundex(string a)
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

通常の文字列を SOUNDEX 文字列に変換します。

パラメータの説明: a は String 型です。

戻り値: String 型。 入力値が NULL の場合は、NULL が返されます。

例:
soundex('hello')='H400'

SUBSTRING_INDEX

コマンド形式:
string substring_index(string a, string SEP, int count))
新規データ型関数を使用するには、関数を指定する SQL 文の前に set odps.sql.type.system.odps2 = true; を追加し、SQL 文と一緒に実行します。

使用法:

count で指定した区切り文字の前部分を残し、文字列 a を切り捨てます。 count が正の場合は、区切り文字の左側の部分が残されます。 count が負の場合は、右側の部分が残されます。

パラメータの説明: a と SEP 部分は String 型で、count 部分は Int 型です。

戻り値:

String 型。 入力値が NULL の場合は、NULL が返されます。

例:
substring_index('https://www.alibabacloud.com, '.', 2)='https://www.alibabacloud'
substring_index('https://www.alibabacloud.com', '.', -2)='alibabacloud.com'
substring_index('https://www.alibabacloud.com', null, 2)=null