すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:文字列関数

最終更新日:Jun 24, 2026

SQL 分析では、柔軟な文字列処理のために文字列関数を利用できます。以降のセクションでは、各関数の構文、パラメーター、例について説明します。

次の表は、SQL 分析がサポートする文字列関数の一覧です。

関数

説明

ASCII

指定された文字列の最初の文字の ASCII コードを返します。

CHAR_MATCHCOUNT

文字列 B に含まれる、文字列 A の文字の数を計算します。

CHR

ASCII コードを文字に変換します。

CONCAT

指定されたすべての文字列を連結し、連結後の文字列を返します。

CONCAT_WS

指定されたデリミタで、配列内のすべての文字列を連結します。

FIND_IN_SET

カンマ (,) で区切られた複数の文字列の中から、指定された文字列の位置を返します。

FORMAT_NUMBER

数値を指定された書式で文字列に変換します。

INITCAP

各単語の最初の文字を大文字にし、残りの文字を小文字にします。

INSTR

文字列 B における文字列 A の位置を返します。

KEYVALUE

文字列をキーと値のペアに分離し、指定されたキーに対応する値を返します。

LENGTH

文字列の長さを計算します。

LENGTHB

文字列の長さをバイト単位で計算します。

LOCATE

別の文字列内における、指定された文字列の位置を返します。

LPAD

文字列を指定された長さになるように左からパディングします。

LTRIM

文字列の左側から文字を削除します。

REGEXP_COUNT

指定された位置から、指定されたパターンに一致する部分文字列の数を返します。

REGEXP_EXTRACT

指定されたパターンに基づいて文字列をグループに分割し、指定されたグループの文字列を返します。

REGEXP_INSTR

指定された位置から、指定されたパターンに指定回数目に一致する部分文字列の開始位置または終了位置を返します。

REGEXP_REPLACE

指定されたパターンに指定回数目に一致する部分文字列を、別の文字列で置換します。

REGEXP_SUBSTR

指定された位置から、指定されたパターンに指定回数目に一致する文字列内の部分文字列を返します。

REPEAT

指定された文字列を指定回数繰り返した文字列を返します。

REPLACE

文字列 A 内の文字列 B を、別の文字列に置換します。

REVERSE

文字列を逆順にして返します。

RPAD

文字列を指定された長さになるように右からパディングします。

RTRIM

文字列の右側から文字を削除します。

SPACE

空白文字列を生成します。

SPLIT_PART

デリミタで文字列を分割し、指定された番号の部分文字列を返します。

SUBSTR

STRING 型の文字列から、指定された位置と長さの部分文字列を返します。

SUBSTRING

STRING 型またはバイナリ型の文字列から、指定された位置と長さの部分文字列を返します。

SUBSTRING_INDEX

指定されたデリミタから文字列を切り捨てます。

TO_CHAR

BOOLEAN、BIGINT、DECIMAL、または DOUBLE 型のデータを STRING 型に変換します。

TOLOWER

文字列内の大文字を小文字に変換します。

TOUPPER

文字列内の小文字を大文字に変換します。

TRANSLATE

文字列 A に含まれる文字のうち、文字列 B にある文字を文字列 C の対応する文字に置換します。

TRIM

文字列の先頭と末尾から文字を削除します。

ASCII

  • 構文

    bigint ascii(string <str>)
  • 説明

    str で指定された文字列の最初の文字の ASCII コードを返します。

  • パラメーター

    str:必須。入力値は STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型である必要があります。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型に暗黙的に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターの値によって異なります。

    • str の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • str の値が null の場合、null が返されます。

    • 例 1:文字列 abcde の最初の文字の ASCII コードを返します。サンプルステートメント:

      -- 戻り値は 97 です。
      select ascii('abcde'); 
    • 例 2:入力パラメーターが null の場合。サンプルステートメント:

      -- 戻り値は null です。
      select ascii(null);

CHAR_MATCHCOUNT

  • 構文

    bigint char_matchcount(string <str1>, string <str2>)
  • 説明

    str1 の各文字のうち、str2 にも出現する文字の合計数を返します。

  • パラメーター

    str1 および str2:必須。STRING 型の値。値は有効な UTF-8 文字列である必要があります。2 つの文字列の比較中に無効な文字 (Unicode でエンコードされていない文字) が見つかった場合、この関数は負の値を返します。

  • 戻り値

    BIGINT 型の値を返します。str1 または str2 の値が null の場合は、null を返します。

    • 例 1:文字列 aabc に含まれ、文字列 abcde に出現する文字の数を計算します。サンプル文:

      -- 戻り値は 4 です。
      select char_matchcount('aabc','abcde');
    • 例 2:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select char_matchcount(null,'abcde');

CHR

  • 構文

    string chr(bigint <ascii>)
  • 説明

    指定された ASCII コードを文字に変換します。

  • パラメーター

    ascii:必須。BIGINT 型の ASCII コード。有効な値の範囲は 0~128 です。入力値が STRING 型、DOUBLE 型、または DECIMAL 型の場合、計算前に BIGINT 型の値に暗黙的に変換されます。

  • 戻り値

    STRING 型の値を返します。以下のシナリオでは null が返されます。

    • ascii の値が有効な範囲内にない場合、エラーを返します。

    • ascii の値が BIGINT 型、STRING 型、DOUBLE 型、または DECIMAL 型でない場合、エラーを返します。

    • ascii の値が null の場合、null を返します。

    • 例 1:ASCII コード 100 を文字に変換します。サンプル文:

      -- 戻り値は d です。
      select chr(100);
    • 例 2:入力パラメーターは null です。サンプル文:

      -- 戻り値は null です。
      select chr(null);
    • 例 3:入力値は STRING 型の文字列です。サンプル文:

      -- 入力値は計算前に BIGINT 型に暗黙的に変換され、d が返されます。
      select chr('100');

CONCAT

  • 構文

    string concat(string <str1>, string <str2>[,...])
  • 説明

    複数の文字列を連結し、新しい文字列を返します。

  • パラメーター

    • ab: 必須。 これらのパラメーターは配列を指定します。 array<T>T は、配列内の要素のデータ型を指定します。 要素は任意のデータ型にすることができます。 配列 a の要素と配列 b の要素は、同じデータ型である必要があります。 null 要素も演算に含まれます。

    • str1 および str2: 必須。STRING 型の値です。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に暗黙的に STRING 型の値に変換されます。入力値が他のデータ型の場合、エラーが返されます。

  • 戻り値

    STRING 型の値が返されます。入力パラメーターが指定されていない、またはいずれかの入力パラメーターが null の場合、null が返されます。

    • 例 1: 文字列 aabcabcde を連結します。サンプルステートメント:

      -- 戻り値は aabcabcde です。
      select concat('aabc','abcde');
    • 例 2:引数を指定しません。サンプル文:

      -- 戻り値は null です。
      select concat();
    • 例 3:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select concat('aabc', 'abcde', null);

CONCAT_WS

  • 構文

    string concat_ws(string <separator>, string <str1>, string <str2>[,...])
  • 説明

    指定されたデリミタを使用して、すべての入力文字列または配列要素を連結し、結果を返します。

  • パラメーター

    • separator:必須。STRING 型のデリミタ。

    • str1str2:少なくとも 2 つの文字列を指定する必要があります。値は STRING 型です。入力値が BIGINT、DECIMAL、DOUBLE、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。

  • 戻り値

    STRING 型の値が返されます。戻り値は、次のルールに基づいて変化します:

    • str1 または str2 の値が STRING、BIGINT、DECIMAL、DOUBLE、または DATETIME 型でない場合、エラーが返されます。

    • 入力パラメーターがない場合、またはいずれかの入力パラメーターが null の場合は、null が返されます。

    • 例 1:コロン (:) を使用して、文字列 namehanmeimei を連結します。サンプルステートメント:

      -- 戻り値は name:hanmeimei です。
      select concat_ws(':','name','hanmeimei');
    • 例 2:入力パラメーターに null が含まれる場合。サンプルステートメント:

      -- 戻り値は null です。
      select concat_ws(':','avg',null,'34');

FIND_IN_SET

  • 構文

    bigint find_in_set(string <str1>, string <str2>)
  • 説明

    文字列 str2 における部分文字列 str1 の位置を返します。文字列 str2 内の部分文字列はカンマ (,) で区切られています。最初の位置は 1 です。

  • パラメーター

    • str1:必須。STRING 型の値。このパラメーターは、位置を検索する部分文字列を指定します。

    • str2:必須。STRING 型の値。このパラメーターは、部分文字列がカンマ (,) で区切られた文字列を指定します。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターの値によって異なります。

    • str2str1 が含まれていない場合、または str1 にカンマ (,) が含まれている場合、0 が返されます。

    • str1 または str2 の値が null の場合、null が返されます。

  • 使用例

    • 例 1:文字列 abc,hello,ab,c における部分文字列 ab の位置を返します。サンプルステートメント:

      -- 戻り値は 3 です。
      select find_in_set('ab', 'abc,hello,ab,c');
    • 例 2:文字列 abc,hello,ab,c における部分文字列 hi の位置を返します。サンプルステートメント:

      -- 戻り値は 0 です。
      select find_in_set('hi', 'abc,hello,ab,c');
    • 例 3:入力パラメーターが null に設定されています。サンプルステートメント:

      -- 戻り値は null です。
      select find_in_set(null, 'abc,hello,ab,c');

FORMAT_NUMBER

  • 構文

    string format_number(float|double|decimal <expr1>, int <expr2>)
  • 説明

    expr1 を、expr2 で指定したフォーマットで文字列にフォーマットします。

  • パラメーター

    • expr1:必須。FLOAT、DOUBLE、または DECIMAL 型の値。フォーマットする式です。

    • expr2:必須。INT 型の値。有効な値:0 ~ 340。このパラメーターは、保持する小数点以下の桁数を指定します。このパラメーターは、#,###,###.## フォーマットでも表現できます。返される小数点以下の桁数は、このパラメーターの値によって異なります。

  • 戻り値

    STRING 型の値を返します。

    • expr2 の値が 0 より大きく 340 以下の場合、指定した小数点以下の桁数に丸めた値が返されます。

    • expr2 の値が 0 の場合、戻り値には整数部分のみが含まれ、小数点または小数部分は含まれません。

    • expr2 の値が 0 未満、または 340 より大きい場合、エラーが返されます。

    • expr1 または expr2 が空または null の場合、null が返されます。

    • 例 1:指定された数値に基づいて、指定されたフォーマットの値を返します。サンプルステートメント:

      -- 戻り値は 5.230 です。 
      select format_number(5.230134523424545456,3);
      -- 戻り値は 12,332.123 です。 
      select format_number(12332.123456, '#,###,###,###.###');
    • 例 2:入力パラメーターが空または null の場合。サンプルステートメント:

      -- 戻り値は null です。 
      select format_number('',3);
      -- 戻り値は null です。 
      select format_number(null,3);

INITCAP

  • 構文

    string initcap(<str>)
  • 説明

    str で指定された文字列をタイトルケースに変換します。変換後の文字列では、各単語の最初の文字が大文字になり、残りの文字は小文字になります。単語はスペースで区切られます。

  • パラメーター

    str:必須。STRING 型。変換する文字列を指定します。

  • 戻り値

    タイトルケースの文字列が返されます。各単語の最初の文字が大文字になり、残りは小文字になります。

  • -- 戻り値は Odps Sql です。
    SELECT initcap("oDps sql");

INSTR

  • 構文

    bigint instr(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])
  • 説明

    文字列 str1 内の部分文字列 str2 の位置を返します。

  • パラメーター

    • str1:必須。STRING 型の値。このパラメーターは、検索する部分文字列を含む文字列を指定します。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。入力値が他のデータ型の場合、エラーが返されます。

    • str2:必須。STRING 型の値。このパラメーターは、検索する部分文字列を指定します。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。入力値が他のデータ型の場合、エラーが返されます。

    • start_position:任意。BIGINT 型の値。入力値が他のデータ型の場合、エラーが返されます。このパラメーターは、検索を開始する str1 内の位置を指定します。デフォルトの開始位置は 1 (先頭文字) です。start_position が負の値の場合、検索は文字列の末尾から先頭に向かって行われ、末尾の文字が –1 になります。

    • nth_appearance: 任意。 0 より大きい BIGINT 型の値です。 このパラメーターは、文字列 str1 内で部分文字列 str2nth 番目に出現することを指定します。 nth_appearance の値が別のデータ型であるか、0 以下の場合、エラーが返されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターの値によって異なります。

    • str1str2 が見つからない場合、0 が返されます。

    • str2 が空の文字列の場合、一致が成功します。たとえば、 select instr('abc',''); の場合、値 1 が返されます。

    • str1str2start_position、または nth_appearance の値が null の場合、null が返されます。

    • 例 1:文字列 Tech on the net 内の部分文字列 e の位置を返します。サンプル文:

      -- 戻り値は 2 です。
      select instr('Tech on the net', 'e');
    • 例 2:文字列 Tech on the net 内の部分文字列 on の位置を返します。サンプル文:

      -- 戻り値は 6 です。
      select instr('Tech on the net', 'on');
    • 例 3:3 番目の文字から、文字列 Tech on the net 内で 2 回目に出現する部分文字列 e の位置を返します。サンプル文:

      -- 戻り値は 14 です。
      select instr('Tech on the net', 'e', 3, 2);
    • 例 4:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select instr('Tech on the net', null);

KEYVALUE

  • 構文

    keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
    keyvalue(string <str>,string <key>) 
  • 説明

    文字列 strsplit1 でキーと値のペアに分割し、split2 でキーと値を分離して、指定された key の値を返します。

  • パラメーター

    • str:必須。STRING 型。このパラメーターは、分割する文字列を指定します。

    • split1split2:任意。STRING 型。これらのパラメーターは、ソース文字列を分割するための区切り文字を指定します。2つのパラメーターを設定しない場合、デフォルト値が使用されます。split1 のデフォルト値はセミコロン (;) で、split2 のデフォルト値はコロン (:) です。ソース文字列を split1 で分割した後のキーと値のペアに、split2 で指定された区切り文字が複数含まれている場合、戻り値は未定義になります。

    • key:必須。STRING 型。ソース文字列を split1split2 で順番に分割した後、key に対応する値が返されます。

  • 戻り値

    STRING 型の値が返されます。次のシナリオでは、値 null が返されます。

    • split1 または split2 の値が null の場合、null が返されます。

    • str または key の値が null の場合、または key に一致する値がない場合、null が返されます。

    • 複数のキーと値のペアが一致する場合、キーの値と一致する最初の値が返されます。

  • 使用例

    • 例 1:文字列 '0:1;1:2' をキーと値のペアに分割し、キー '1' に対応する値を返します。サンプルステートメント:

      -- 戻り値は '2' です。
      select keyvalue('0:1;1:2', '1');

      split1split2 パラメーターは指定されていません。split1 のデフォルト値はセミコロン (;) で、split2 のデフォルト値はコロン (:) です。

      ソース文字列が split1 で分割されると、キーと値のペア 0:1\,1:2 が返されます。キーと値のペアが split2 で分割されると、次のキーと値が生成されます:

      0 1  
      1 2

      キー '1' に対応する値 '2' が返されます。

    • 例 2:文字列 \;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\; をバックスラッシュとセミコロン (\;) を使用してキーと値のペアに分割し、コロン (:) を使用してキーと値を分離し、キー tf に対応する値を返します。サンプルステートメント:

      -- 戻り値は '21910' です。
      select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");

      ソース文字列 \;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\; をバックスラッシュとセミコロン (\;) を使用して分割すると、次のキーと値のペアが生成されます:

      decreaseStore:1, xcard:1, isB2C:1, tf:21910, cart:1, shipping:2, pf:0, market:shoes, instPayAmount:0 

      キーと値のペアをコロン (:) を使用して分離すると、次のキーと値が生成されます:

      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 の長さを返します。

  • パラメーター

    str :必須。STRING 型の値。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターによって異なります。

    • str が STRING、BIGINT、DOUBLE、DECIMAL、または DATETIME 型でない場合、エラーが返されます。

    • str が NULL の場合、NULL が返されます。

    • str が UTF-8 でエンコードされていない場合、-1 が返されます。

  • 使用例

    • 例 1:文字列 Tech on the net の長さを返します。文の例:

      -- 15 が返されます。
      select length('Tech on the net');
    • 例 2:入力パラメーターが NULL の場合。文の例:

      -- NULL が返されます。
      select length(null);

LENGTHB

  • 構文

    BIGINT lengthb(STRING <str>)
  • 説明

    文字列 <str> の長さをバイト単位で返します。

  • パラメーター

    <str>:必須。STRING 型。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターの値によって異なります。

    • <str> の値が STRING、BIGINT、DOUBLE、DECIMAL、または DATETIME 型でない場合、エラーが返されます。

    • <str> の値が null の場合、null が返されます。

  • 使用例

    • 例 1: 文字列 Tech on the net の長さをバイト単位で返します。サンプルステートメント:

      -- 戻り値は 15 です。
      select lengthb('Tech on the net');
    • 例 2:入力パラメーターが null の場合。サンプルステートメント:

      -- 戻り値は null です。
      select lengthb(null);

LOCATE

  • 構文

    BIGINT locate(string <substr>, string <str>[, BIGINT <start_pos>]) 
  • 説明

    文字列 str 内で、部分文字列 substr が最初に出現する位置を返します。start_pos で、検索を開始する位置を指定できます。位置は 1 から始まります。

  • パラメーター

    • substr:必須。STRING 型。検索したい部分文字列を指定します。

    • str:必須。STRING 型。検索対象の文字列を指定します。

    • start_pos:任意。BIGINT 型。検索を開始する位置を指定します。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は、次のルールに従います。

    • strsubstr が見つからない場合、0 が返されます。

    • str または substr が null の場合、null が返されます。

    • start_pos が null の場合、0 が返されます。

    • 例 1:文字列 abchelloabc から文字列 ab の位置を返します。サンプル文:

      -- 戻り値は 1 です。
      select locate('ab', 'abchelloabc');
    • 例 2:文字列 abchelloabc から文字列 hi の位置を返します。サンプル文:

      -- 戻り値は 0 です。
      select locate('hi', 'abchelloabc');
    • 例 3:start_pos パラメーターが null に設定されています。サンプル文:

      -- 戻り値は 0 です。
      select locate('ab', 'abhelloabc', null);

LPAD

  • 構文

    string lpad(string <str1>, int <length>, string <str2>)
  • 説明

    str1 を、指定された長さ length になるまで str2 で左パディングします。

  • パラメーター

    • str1:必須。STRING 型。このパラメーターは、左パディングの対象となる文字列を指定します。

    • length:必須。INT 型。このパラメーターは、パディング後の文字列の長さを指定します。

    • str2:必須。STRING 型。このパラメーターは、左パディングに使用する文字列を指定します。

  • 戻り値

    STRING 型の値が返されます。ただし、以下の特殊なケースがあります。

    • length の値が str1 の文字数より小さい場合、str1 の先頭から length 文字が返されます。

    • length が 0 に設定されている場合、空の文字列が返されます。

    • 入力パラメーターのいずれかが null の場合、null が返されます。

    • 例 1:文字列 abcdefgh を文字列 12 で左パディングして、長さ 10 文字の文字列を取得します。サンプルステートメント:

      -- 戻り値は 12abcdefgh です。
      select lpad('abcdefgh', 10, '12');
    • 例 2:文字列 abcdefgh を文字列 12 で左パディングして、長さ 5 文字の文字列を取得します。サンプルステートメント:

      -- 戻り値は abcde です。
      select lpad('abcdefgh', 5, '12');
    • 例 3:length の値が 0 の場合。サンプルステートメント:

      -- 戻り値は空の文字列です。
      select lpad('abcdefgh', 0, '12'); 
    • 例 4:入力パラメーターが null の場合。サンプルステートメント:

      -- 戻り値は null です。
      select lpad(null, 0, '12');

LTRIM

  • 構文

    string ltrim(string <str>[, <trimChars>])
    string trim(leading [<trimChars>] from <str>)
  • 説明

    str で指定された文字列の左側から文字を削除します。

    • trimChars を指定しない場合、左側のスペースを自動的に削除します。

    • trimChars を指定した場合、trimChars で指定された 1 つ以上の文字で構成される部分文字列を、str で指定された文字列の左側から削除します。

  • パラメーター

    • str:必須。 STRING 型の値。このパラメーターは、左側から文字を削除する文字列を指定します。入力値が BIGINT 型、DECIMAL 型、DOUBLE 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。

    • trimChars:任意。 STRING 型の値。このパラメーターは、削除する文字を指定します。

  • 戻り値

    STRING 型の値が返されます。戻り値は次のルールに基づいて異なります。

    • str の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • str または trimChars の値が null の場合、null が返されます。

    • 例 1:文字列 yxTxyomxx の左側からスペースを削除します。サンプルステートメント:

      -- 戻り値は yxTxyomxx です。
      select ltrim(' yxTxyomxx ');
      -- 上記のステートメントは次のステートメントと同等です。
      select trim(leading from ' yxTxyomxx ');
    • 例 2:文字列 yxTxyomxx の左側から、xy に含まれる 1 つ以上の文字で構成される部分文字列を削除します。

      -- 戻り値は Txyomxx です。左側に x または y が出現する場合、削除します。
      select ltrim('yxTxyomxx', 'xy');
      -- 上記のステートメントは次のステートメントと同等です。
      select trim(leading 'xy' from 'yxTxyomxx');
    • 例 3:入力パラメーターを null に設定します。サンプルステートメント:

      -- 戻り値は null です。
      select ltrim(null);
      select ltrim('yxTxyomxx', null);

REGEXP_COUNT

  • 構文

    bigint regexp_count(string <source>, string <pattern>[, bigint <start_position>])
  • 説明

    start_position で指定された開始位置から、ソース文字列内で指定された pattern に一致する部分文字列の数を返します。

  • パラメーター

    • source:必須。STRING 型。検索対象の文字列を指定します。値が STRING 型でない場合、エラーが返されます。

    • pattern:必須。STRING 型の定数または正規表現。照合するパターンを指定します。正規表現の詳細については、「正規表現」をご参照ください。pattern が空の文字列であるか、別のデータ型である場合、エラーが返されます。

    • start_position:任意。BIGINT 型の定数。このパラメーターの値は 0 より大きい必要があります。値が別のデータ型であるか、0 以下の場合、エラーが返されます。このパラメーターを省略した場合、デフォルト値 1 が使用されます。この値は、ソース文字列の最初の文字から検索が開始されることを示します。

  • 戻り値

    BIGINT 型の値が返されます。戻り値は入力パラメーターの値によって異なります。

    • 一致する部分文字列がない場合、0 が返されます。

    • sourcepattern、または start_position の値が null の場合、null が返されます。

    • 例 1:abababc 内で、指定された位置からパターンに一致する部分文字列の数を計算します。サンプル文:

      -- 戻り値は 1 です。
      select regexp_count('abababc', 'a.c');
      -- 戻り値は 2 です。
      select regexp_count('abababc', '[[:alpha:]]{2}', 3);
    • 例 2:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select regexp_count('abababc', null);
    • 例 3:JSON 文字列 {"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100} 内の : の数を計算します。サンプル文:

      -- 戻り値は 4 です。
      select regexp_count('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');

REGEXP_EXTRACT

  • 構文

    string regexp_extract(string <source>, string <pattern>[, bigint <groupid>])
  • 説明

    pattern に基づいて source 文字列をグループに分割し、groupid で指定されたグループの文字列を返します。

  • パラメーター

    • source:必須。STRING 型の値。このパラメーターは、分割する文字列を指定します。

    • pattern:必須。STRING 型の定数または正規表現。部分文字列をマッチングするためのパターンを指定します。正規表現の詳細については、正規表現をご参照ください。

    • groupid:任意。BIGINT 型の定数。このパラメーターの値は 0 以上である必要があります。

    説明

    データは UTF-8 形式で格納されます。漢字は 16 進数で表すことができます。これらは [\\x{4e00}, \\x{9fa5}] の範囲でエンコードされます。

  • 戻り値

    STRING 型の値が返されます。次のシナリオでは、エラーまたは null が返されます。

    • pattern が空の文字列である場合、または pattern にグループが指定されていない場合、エラーが返されます。

    • groupid の値が BIGINT 型でない場合、または 0 未満の場合、エラーが返されます。このパラメーターを指定しない場合、デフォルト値 1 が使用されます。この値は、最初のグループの文字列が返されることを意味します。groupid の値が 0 の場合、pattern に一致するすべての部分文字列が返されます。

    • sourcepattern、または groupid の値が null の場合、null が返されます。

REGEXP_INSTR

  • 構文

    bigint regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
  • 説明

    ソース文字列内で、start_position で指定された開始位置から、pattern に一致する部分文字列を検索し、occurrence で指定された出現回数番目の一致の開始位置または終了位置を返します。

  • パラメーター

    • source:必須。STRING 型。このパラメーターは、ソース文字列を指定します。

    • pattern:必須。STRING 型の定数または正規表現。このパラメーターは、一致させるパターンを指定します。正規表現の詳細については、正規表現をご参照ください。pattern が空文字列の場合、エラーが返されます。

    • start_position:任意。BIGINT 型の定数。このパラメーターは、検索を開始する位置を指定します。このパラメーターを指定しない場合、デフォルト値の 1 が使用されます。

    • occurrence:任意。BIGINT 型の定数。検索する部分文字列の出現回数を指定します。このパラメーターを省略した場合、デフォルト値の 1 が使用されます。これは、パターンに一致する最初の部分文字列を検索することを示します。

    • return_option:任意。BIGINT 型の定数。このパラメーターは、指定されたパターンに一致する部分文字列の開始位置または終了位置のどちらを返すかを指定します。有効な値は 0 と 1 です。このパラメーターを指定しない場合、デフォルト値の 0 が使用されます。このパラメーターに無効な数値または別のデータ型の値を設定した場合、エラーが返されます。値 0 は、指定されたパターンに一致する部分文字列の開始位置が返されることを意味します。値 1 は、指定されたパターンに一致する部分文字列の終了位置が返されることを意味します。

  • 戻り値

    BIGINT 型の値が返されます。この値は、return_option の指定に基づいて、ソース文字列内の一致した部分文字列の開始位置または終了位置を示します。戻り値は次のルールに基づいて異なります。

    • pattern が空文字列の場合、エラーが返されます。

    • start_position または occurrence の値が BIGINT 型でないか、0 以下の場合、エラーが返されます。

    • sourcepatternstart_positionoccurrence、または return_option の値が null の場合、null が返されます。

    • 例 1:文字列 i love www.taobao.com3 番目の文字から、o[[:alpha:]]{1} に一致する 2 番目の部分文字列の開始位置を返します。サンプル文:

      -- 戻り値は 14 です。
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2);
    • 例 2:文字列 i love www.taobao.com3 番目の文字から、o[[:alpha:]]{1} に一致する 2 番目の部分文字列の終了位置を返します。サンプル文:

      -- 戻り値は 15 です。
      select regexp_instr('i love www.taobao.com', 'o[[:alpha:]]{1}', 3, 2, 1);
    • 例 3:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select regexp_instr('i love www.taobao.com', null, 3, 2);

REGEXP_REPLACE

  • 構文

    string regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])
  • 説明

    ソース文字列内で パターン に一致する部分文字列のうち、出現位置 で指定されたn番目のものを、置換文字列 で指定された文字列に置換し、結果を返します。

  • パラメーター

    • ソース:必須。STRING 型。このパラメーターは、置換対象の文字列を指定します。

    • パターン:必須。STRING 型の定数または正規表現。このパラメーターは、一致させる必要のあるパターンを指定します。正規表現の詳細については、正規表現をご参照ください。 パターン が空の文字列の場合、エラーが返ります。

    • 置換文字列:必須。STRING 型。この値は、パターン に一致する文字列を置換するために使用します。

    • occurrence: 省略可能。 0 以上の BIGINT 型の定数である必要があります。 このパラメーターの値は、指定されたパターンに一致する文字列のうち、occurrence で指定された番目のものを replace_string に置換することを示します。 このパラメーターを 0 に設定すると、指定されたパターンに一致するすべての部分文字列が置換されます。 値が別のデータ型であるか、0 未満の場合は、エラーが返されます。 デフォルト値: 0。

  • 戻り値

    STRING 型の値を返します。次のシナリオでは NULL が返ります。

    • 置換文字列で参照されるグループが存在しない場合、その参照は空の文字列として扱われます。

    • 置換文字列 の値が NULL で、部分文字列が パターン に一致する場合、NULL が返ります。

    • 置換文字列 の値が NULL で、部分文字列が パターン に一致しない場合、元の文字列が返ります。

    • ソースパターン、または 出現位置 の値が NULL の場合、NULL が返ります。

    • 例 1: 123.456.7890 文字列内で ([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4}) に一致するすべての部分文字列を (\\1)\\2-\\3 に置換します。サンプル文:

      -- 戻り値は (123)456-7890 です。
      select regexp_replace('123.456.7890', '([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})',
      '(\\1)\\2-\\3', 0);
    • 例 2: abcd 文字列内で指定されたパターンに一致する部分文字列を置換します。サンプル文:

      -- 戻り値は a b c d です。
      select regexp_replace('abcd', '(.)', '\\1 ', 0);
      -- 戻り値は a bcd です。
      select regexp_replace('abcd', '(.)', '\\1 ', 1);
      -- 戻り値は abcd です。
      select regexp_replace('abcd', '(.)', '\\2', 1);
    • 例 3:テーブル url_set の url カラムのデータは www.simple@xxx.com フォーマットであり、各行の xxx は異なります。url カラム内の www の後のすべてのコンテンツを置換します。サンプル文:

      -- 戻り値は wwwtest です。
      select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
    • 例 4:入力パラメーターに NULL を指定します。サンプル文:

      -- 戻り値は NULL です。
      select regexp_replace('abcd', '(.)', null, 0);
    • 例 5:グループ参照の例。サンプル文:

      -- パターンには2つのグループが定義されており、'\\2'は2番目のグループを参照します。
      regexp_replace("abcd", "(.*)(.)$", "\\2", 0) = "d"
      -- パターンにはグループが定義されていません。したがって、'\\1' は存在しないグループを参照し、空の文字列として扱われます。
      regexp_replace("abcd", "a", "\\1", 0) = "bcd"

REGEXP_SUBSTR

  • 構文

    string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
  • 説明

    source 文字列の start_position で指定された開始位置から、pattern に一致する occurrence 番目の部分文字列を返します。

  • パラメーター

    • source:必須。STRING 型。このパラメーターは、検索対象の文字列を指定します。

    • pattern:必須。STRING 型の定数または正規表現。このパラメーターは、照合するパターンを指定します。正規表現の詳細については、「正規表現」をご参照ください。

    • start_position:任意。BIGINT 型の定数。値は 0 より大きい必要があります。このパラメーターを指定しない場合、デフォルト値 1 が使用されます。この値は、source 文字列の最初の文字から検索が開始されることを意味します。

    • occurrence:任意。BIGINT 型の定数。値は 0 より大きい必要があります。このパラメーターを指定しない場合、デフォルト値 1 が使用されます。この値は、最初に一致した部分文字列が返されることを意味します。

  • 戻り値

    STRING 型の値が返されます。一致する部分文字列がない場合、または source、pattern、start_position、occurrence のいずれかの入力パラメーターが NULL の場合は、NULL が返されます。次のシナリオではエラーが返されます。

    • pattern が空文字列の場合、エラーが返されます。

    • 指定されたパターンに一致するサブストリングがない場合、 null が返されます。

    • start_position または occurrence の値が BIGINT 型でない、または 0 以下の場合、エラーが返されます。

    • sourcepatternstart_positionoccurrence、または return_option の値が null の場合、null が返されます。

    • 例 1:文字列 I love aliyun very much 内で指定されたパターンに一致する部分文字列を返します。サンプルステートメント:

      -- 戻り値は aliyun です。
      select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}');
      -- 戻り値は ' have' です。
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1);
      -- 戻り値は ' 2' です。
      select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
    • 例 2:入力パラメーターが NULL に設定されています。サンプルステートメント:

      -- 戻り値は NULL です。
      select regexp_substr('I love aliyun very much', null);

REPEAT

  • 構文

    string repeat(string <str>, bigint <n>)
  • 説明

    strn 回繰り返した文字列を返します。

  • パラメーター

    • str:必須。STRING 型の値。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型に暗黙的に変換されます。

    • n:必須。BIGINT 型の値。返される文字列の長さは 2 MB を超えることはできません。

  • 戻り値

    STRING 型の値を返します。入力パラメーターが無効な場合はエラーを返し、入力パラメーターが NULL の場合は NULL を返します。

    • str が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーを返します。

    • n が空の場合、エラーを返します。

    • str または n が NULL の場合、NULL を返します。

    • 例 1:文字列 abc5 回繰り返した文字列を返します。サンプルステートメント:

      -- 戻り値は abcabcabcabcabc です。
      select repeat('abc', 5); 
    • 例 2:入力パラメーターに NULL を設定します。サンプルステートメント:

      -- 戻り値は NULL です。
      select repeat('abc', null);

REPLACE

  • 構文

    string replace(string <str>, string <old>, string <new>)
  • 説明

    str で指定された文字列のうち、old で指定された文字列と完全に一致する部分を new で指定された文字列に置換し、置換後の文字列全体を返します。str で指定された文字列のいずれの部分も old で指定された文字列と完全に一致しない場合は、元の文字列を返します。

  • パラメーター

    • str:必須。STRING 型の値。このパラメーターは、置換対象の文字列を指定します。

    • old:必須。このパラメーターは、比較に使用する文字列を指定します。

    • new:必須。このパラメーターは、置換に使用する文字列を指定します。

  • 戻り値

    STRING 型の値を返します。入力パラメーターが null の場合、null を返します。

    • 例 1:文字列 ababab のうち、文字列 abab と完全に一致する部分を文字列 12 に置換します。サンプルステートメント:

      -- 戻り値は 12ab です。 
      select replace('ababab','abab','12');
    • 例 2:入力パラメーターに null を指定します。サンプルステートメント:

      -- 戻り値は null です。 
      select replace('123abab456ab',null,'abab');

REVERSE

  • 構文

    string reverse(string <str>)
  • 説明

    文字列を反転したコピーを返します。

  • パラメーター

    str:必須。STRING 型の値。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。

  • 戻り値

    STRING 型の値が返されます。次の場合、戻り値は異なります。

    • str の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返ります。

    • str の値が null の場合、null が返ります。

    • 例 1:文字列 I love aliyun very much を逆順にした文字列を返します。ステートメント例:

      -- 戻り値は hcum yrev nuyila evol I です。
      select reverse('I love aliyun very much');
    • 例 2:入力パラメーターを null にします。ステートメント例:

      -- 戻り値は null です。
      select reverse(null);

RPAD

  • 構文

    string rpad(string <str1>, int <length>, string <str2>)
  • 説明

    str1length で指定した長さになるまで str2 で右パディングします。

  • パラメーター

    • str1:必須。 STRING 型の値。このパラメーターは、右パディングする文字列を指定します。

    • length:必須。 INT 型の値。このパラメーターは、パディング後の文字列の長さを指定します。

    • str2:必須。このパラメーターは、パディングに使用する文字列を指定します。

  • 戻り値

    STRING 型の値が返されます。ただし、以下の特殊なケースがあります。

    • length の値が str1 の文字数より小さい場合、str1 の先頭から length 文字が返されます。

    • length が 0 に設定されている場合、空の文字列が返されます。

    • 入力パラメーターのいずれかが null の場合、null が返されます。

    • 例 1: 文字列 abcdefgh を文字列 12 で右にパディングし、長さが 10 文字の文字列にします。サンプル文:

      -- 戻り値は abcdefgh12 です。
      select rpad('abcdefgh', 10, '12');
    • 例 2: 文字列 abcdefgh の右側を文字列 12 でパディングし、長さが 5 文字になるようにします。 実行例:

      -- 戻り値は abcde です。
      select rpad('abcdefgh', 5, '12');
    • 例 3:length に 0 を指定します。サンプル文:

      -- 戻り値は空文字列です。
      select rpad('abcdefgh' ,0, '12'); 
    • 例 4:入力パラメーターに null を指定します。サンプル文:

      -- 戻り値は null です。
      select rpad(null ,0, '12');

RTRIM

  • 構文

    string rtrim(string <str>[, <trimChars>])
    string trim(trailing [<trimChars>] from <str>)
  • 説明

    str で指定された文字列の右側から文字を削除します。

    • trimChars を指定しない場合、右側の空白が自動的に削除されます。

    • trimChars を指定した場合、str で指定された文字列の右側から、trimChars で指定された 1 つ以上の文字で構成される部分文字列を削除します。

  • パラメーター

    • str:必須。STRING 型の値。このパラメーターは、右側の文字を削除する対象の文字列を指定します。入力値が BIGINT、DECIMAL、DOUBLE、または DATETIME 型の場合、値は計算前に暗黙的に STRING 型の値に変換されます。

    • trimChars:任意。STRING 型の値。このパラメーターは、削除する文字を指定します。

  • 戻り値

    STRING 型の値が返されます。戻り値は次のルールに基づいて異なります。

    • str の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • str または trimChars の値が null の場合、null が返されます。

    • 例 1: 文字列 yxTxyomxx の右側からスペースを削除します。サンプルステートメント:

      -- 戻り値は ' yxTxyomxx' です。
      select rtrim(' yxTxyomxx  ');
      -- 上記の文は、次の文と同等です。
      select trim(trailing from ' yxTxyomxx  ');
    • 例 2: 文字列 yxTxyomxx の右側から、xy コレクションの 1 文字以上の文字からなる部分文字列を削除します。

      -- 戻り値は yxTxyom です。文字列の右側に x または y が出現した場合、削除されます。
      select rtrim('yxTxyomxx', 'xy');
      -- 上記の文は、次の文と同等です。
      select trim(trailing 'xy' from 'yxTxyomxx');
    • 例 3:入力パラメーターが null の場合。サンプル文:

      -- 戻り値は両方とも null です。
      select rtrim(null);
      select rtrim('yxTxyomxx', null);

SPACE

  • 構文

    string space(bigint <n>)
  • 説明

    n 個のスペースからなる文字列を生成します。

  • パラメータ

    n:必須。BIGINT 型の値。返される文字列の長さは 2 MB を超えることはできません。

  • 戻り値

    STRING 型の値を返します。以下の点にご注意ください。

    • n が指定されていない場合、エラーを返します。

    • n の値が null の場合、null を返します。

  • -- 戻り値は 10 です。
    select length(space(10));

SPLIT_PART

  • 構文

    string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])
  • 説明

    str で指定された文字列を、separator で指定された区切り文字で分割し、start で指定された文字から end で指定された文字までの部分文字列を返します。

  • パラメーター

    • str: 必須。STRING 型の値。このパラメーターは、分割する文字列を指定します。入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、値は計算前に暗黙的に STRING 型に変換されます。

    • separator: 必須。 STRING 型の定数です。 このパラメーターは、文字列の分割に使用する区切り文字を指定します。 区切り文字には、文字または文字列を指定できます。

    • start: 必須。 BIGINT 型の定数で、0 より大きい値を指定する必要があります。 返される部分文字列の開始位置を指定します。 位置は 1 から始まります。

    • end: BIGINT 型の定数で、返される部分文字列の終了位置を指定します。 値は start 以上である必要があります。 このパラメーターを指定しない場合、値は start と等しくなり、start で指定された文字から始まる部分文字列が返されます。

  • 戻り値

    STRING 型の値が返されます。

    • start が部分文字列の数より大きい値に設定されている場合、空文字列が返されます。 たとえば、文字列に 6 つの部分文字列があり、start の値が 6 より大きい場合、空文字列が返されます。

    • str で指定された文字列に separator の値が存在せず、かつ start が 1 に設定されている場合、str で指定された文字列が返されます。str が空の文字列の場合、空の文字列が返されます。

    • separator が空文字列の場合、str で指定された元の文字列が返されます。

    • end の値がサブストリングの数より大きい場合、start で指定された文字から始まるサブストリングが返されます。

    • str の値が STRING、BIGINT、DOUBLE、DECIMAL、または DATETIME 型でない場合、エラーが返されます。

    • separator の値が STRING 型の定数ではない場合、エラーが返されます。

    • start または end の値が BIGINT 型の定数でない場合、エラーが返されます。

    • separator 以外の入力パラメーターの値が null の場合、null が返されます。

  • 使用例

    • 例 1: カンマ (,) を区切り文字として、文字列 a,b,c,d を分割し、指定されたルールに一致する部分文字列を返します。 サンプルステートメント:

      -- 戻り値は a です。
      select split_part('a,b,c,d', ',', 1);
      -- 戻り値は a,b です。
      select split_part('a,b,c,d', ',', 1, 2);
    • 例 2: start の値が、指定された文字列を分割した後の部分文字列の数より大きい場合です。 サンプル文:

      -- 戻り値は空の文字列です。
      select split_part('a,b,c,d', ',', 10);
    • 例 3: separator は、str で指定された文字列に存在しません。サンプル文:

      -- 戻り値は a,b,c,d です。
      select split_part('a,b,c,d', ':', 1);
      -- 戻り値は空の文字列です。
      select split_part('a,b,c,d', ':', 2);
    • 例 4: separator は空文字列です。サンプル文:

      -- 戻り値は a,b,c,d です。
      select split_part('a,b,c,d', '', 1);
    • 例 5: end の値が、指定された文字列を分割して得られるサブストリングの数を超えています。サンプルステートメント:

      -- 戻り値は b,c,d です。
      select split_part('a,b,c,d', ',', 2, 6);
    • 例 6: separator 以外の入力パラメーターに null が設定されています。サンプルステートメント:

      -- 戻り値は null です。
      select split_part('a,b,c,d', ',', null);

SUBSTR

  • 構文

    string substr(string <str>, bigint <start_position>[, bigint <length>])
  • 説明

    文字列 strstart_position から始まる、長さ length の部分文字列を返します。

  • パラメーター

    • str:必須。STRING 型の値。入力値が BIGINT 型、DECIMAL 型、DOUBLE 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。

    • start_position:必須。BIGINT 型の値。デフォルト値:1。

      • start_position が 0 に設定されている場合、このパラメーターが 1 に設定されている場合と同じ値が返されます。

    • length:任意。BIGINT 型の値。このパラメーターは、部分文字列の長さを指定します。このパラメーターの値は 0 より大きい必要があります。

  • 戻り値

    STRING 型の値が返されます。

    • str の値が STRING 型、BIGINT 型、DECIMAL 型、DOUBLE 型、または DATETIME 型でない場合、エラーが返されます。

    • length の値が BIGINT 型でない場合、または 0 以下の場合、エラーが返されます。

    • length が設定されていない場合、開始位置から str の末尾までの部分文字列が返されます。

    • strstart_position、または length が NULL の場合、NULL が返されます。

    • 例 1:文字列 abc の指定された位置から、指定された長さの部分文字列を返します。サンプル文:

      -- 戻り値は bc です。
      select substr('abc', 2);
      -- 戻り値は b です。
      select substr('abc', 2, 1);
      -- 戻り値は bc です。
      select substr('abc',-2 , 2);
    • 例 2:入力パラメーターに NULL を指定します。サンプル文:

      -- 戻り値は NULL です。
      select substr('abc', null);

SUBSTRING

  • 構文

    string substring(string|binary <str>, int <start_position>[, int <length>])
  • 説明

    文字列 strstart_position から、長さ length の部分文字列を返します。

  • パラメーター

    • str:必須。STRING 型またはバイナリ型の値。

    • start_position:必須。INT 型の値。開始位置は 1 から始まります。 start_position が 0 に設定されている場合、空の文字列が返されます。 start_position が負の値の場合、検索は文字列の末尾から先頭に向かって開始され、最後の文字は -1 です。

    • length:任意。INT 型の値。このパラメーターは部分文字列の長さを指定します。このパラメーターの値は 0 より大きい必要があります。

  • 戻り値

    STRING 型の値が返されます。

    • str が STRING 型またはバイナリ型でない場合、エラーが返されます。

    • length の値が INT 型でないか、0 以下の場合、エラーが返されます。

    • length が指定されていない場合、開始位置から str の末尾までの部分文字列が返されます。

    • strstart_position、または length の値が null の場合、null が返されます。

    • 例 1:文字列 abc 内の指定した位置から、指定した長さの部分文字列を返します。サンプルステートメント:

      -- 戻り値は bc です。
      select substring('abc', 2);
      -- 戻り値は b です。
      select substring('abc', 2, 1);
      -- 戻り値は bc です。
      select substring('abc',-2,2);
      -- 戻り値は ab です。
      select substring('abc',-3,2);
      -- 戻り値は 001 です。
      substring(bin(2345), 2, 3);
    • 例 2:入力パラメーターに null を設定します。サンプルステートメント:

      -- 戻り値は null です。
      select substring('abc', null, null);

SUBSTRING_INDEX

  • 構文

    string substring_index(string <str>, string <separator>, int <count>)
  • 説明

    文字列 str を、最初の文字から n 番目の区切り文字までの部分文字列に切り詰めます。n は count で指定します。count が正の値の場合、文字列を左から右へ切り詰めます。count が負の値の場合、文字列を右から左へ切り詰めます。

  • パラメーター

    • str:必須。切り詰める対象の STRING 型の文字列。

    • separator:必須。STRING 型の区切り文字。

    • count:必須。区切り文字の位置を指定する INT 型の値。

  • 戻り値

    STRING 型の値を返します。いずれかの入力パラメーターが NULL の場合、NULL を返します。

    • 例 1:文字列 https://www.alibabacloud.com を切り詰めます。

      -- https://www.alibabacloud を返します。
      select substring_index('https://www.alibabacloud.com', '.', 2);
      -- alibabacloud.com を返します。
      select substring_index('https://www.alibabacloud.com', '.', -2);
    • 例 2:入力パラメーターに NULL を指定します。

      -- NULL を返します。
      select substring_index('https://www.alibabacloud.com', null, 2);

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 型に変換します。

  • パラメーター

    value:必須。BOOLEAN 型、BIGINT 型、DECIMAL 型、または DOUBLE 型の値。

  • 戻り値

    STRING 型の値を返します。

    • value が BOOLEAN 型、BIGINT 型、DECIMAL 型、または DOUBLE 型でない場合、エラーが返されます。

    • value が null の場合、null が返されます。

    • 例 1: 値を STRING 型に変換する場合:

      -- 戻り値は 123 です。
      select to_char(123);
      -- 戻り値は true です。
      select to_char(true);
      -- 戻り値は 1.23 です。
      select to_char(1.23);
    • 例 2: 入力パラメーターが null の場合:

      -- 戻り値は null です。
      select to_char(null);

TOLOWER

  • 構文

    string tolower(string <source>)
  • 説明

    source で指定された文字列内の大文字を小文字に変換します。

  • パラメーター

    source:必須。STRING 型。入力値が BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型の場合、計算前に STRING 型に暗黙的に変換されます。英字のみがサポートされています。

  • 戻り値

    STRING 型の値が返されます。

    • source の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • source の値が null の場合、 null が返されます。

    • 例 1:文字列内の大文字を小文字に変換します。サンプルステートメント:

      -- 戻り値は abcd です。
      select tolower('aBcd');
      -- 戻り値は china fighting です。
      select tolower ('China Fighting'); 
    • 例 2:入力パラメーターに null を指定します。サンプルステートメント:

      -- 戻り値は null です。
      select tolower(null);

TOUPPER

  • 構文

    string toupper(string <source>)
  • 説明

    source で指定された文字列の小文字を大文字に変換します。

  • パラメーター

    source: 必須。 STRING 型の値。 入力値が BIGINT、DOUBLE、DECIMAL、または DATETIME 型の場合、値は計算前に暗黙的に STRING 型の値に変換されます。 英字のみがサポートされています。

  • 戻り値

    STRING 型の値が返されます。

    • source の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • source の値が null の場合、 null が返されます。

    • 例 1:文字列内の小文字を大文字に変換します。サンプルステートメント:

      -- 戻り値は ABCD です。
      select toupper('aBcd');
      -- 戻り値は CHINA FIGHTING です。
      select toupper('China Fighting'); 
    • 例 2:入力パラメーターが null の場合。サンプルステートメント:

      -- 戻り値は null です。
      select toupper(null);

TRANSLATE

  • 構文

    string translate(string|varchar <str1>, string|varchar <str2>, string|varchar <str3>)
  • 説明

    str1 内で、str2 に含まれる各文字を str3 の対応する文字に置換します。str1 の文字が str2 に存在しない場合、置換は行われません。

  • 戻り値

    STRING 型の値を返します。いずれかの入力パラメーターが null の場合、null を返します。

    • 例 1:文字列 ababab に含まれる文字のうち、abab にある文字を cd の対応する文字で置換します。ステートメント例:

      -- 戻り値は cdcdcd です。
      select translate('ababab','abab','cd');
    • 例 2:文字列 ababab に含まれる文字のうち、abab にある文字を cdefg の対応する文字で置換します。ステートメント例:

      -- 戻り値は cdcdcd です。
      select translate('ababab','abab','cdefg');
    • 例 3:入力パラメーターに null を設定します。ステートメント例:

      -- 戻り値は null です。
      select translate('ababab','cd',null);

TRIM

  • 構文

    string trim(string <str>[, <trimChars>])
    string trim([BOTH] [<trimChars>] from <str>)
  • 説明

    文字列 str の左右から文字を削除します。

    • trimChars を指定しない場合、文字列の左右にあるスペースが自動的に削除されます。

    • trimChars を指定した場合、文字列 str の左右から、trimChars で指定された文字のいずれか 1 つ以上で構成されるサブストリングを削除します。

  • パラメーター

    • str:必須。STRING 型の値。このパラメーターは、左右から文字を削除する文字列を指定します。入力値が BIGINT 型、DECIMAL 型、DOUBLE 型、または DATETIME 型の場合、計算前に STRING 型の値に暗黙的に変換されます。

    • trimChars:任意。STRING 型の値。このパラメーターは、削除する文字を指定します。

  • 戻り値

    STRING 型の値が返されます。戻り値は次のルールに基づいて異なります。

    • str の値が STRING 型、BIGINT 型、DOUBLE 型、DECIMAL 型、または DATETIME 型でない場合、エラーが返されます。

    • str または trimChars の値が null の場合、null が返されます。

    • 例 1:文字列 yxTxyomxx の左右からスペースを削除します。サンプルステートメント:

      -- 戻り値は yxTxyomxx です。
      select trim(' yxTxyomxx ');
      -- 上記のステートメントは次のステートメントと同等です。
      select trim(both from ' yxTxyomxx ');
      select trim(from ' yxTxyomxx ');
    • 例 2:文字列 yxTxyomxx の左右から、xy コレクション内の文字を削除します。

      -- 戻り値は Txyom です。左右に x または y が出現する場合、削除されます。
      select trim('yxTxyomxx', 'xy');
      -- 上記のステートメントは次のステートメントと同等です。
      select trim(both 'xy' from 'yxTxyomxx');
      select trim('xy' from 'yxTxyomxx');
    • 例 3:入力パラメーターに null を指定します。サンプルステートメント:

      -- 戻り値は null です。
      select trim(null);
      select trim('yxTxyomxx', null);