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

Hologres:文字列関数

最終更新日:Jun 18, 2025

このトピックでは、Hologres でサポートされている文字列関数について説明し、文字列関数の使用方法の例を示します。

説明

PostgreSQL と互換性のある文字列関数の使用方法の詳細については、「PostgreSQL 関数」をご参照ください。

種類

関数

説明

文字列の連結、分割、およびパディング

BTRIM

文字列の両側から特定の文字を削除します。

CONCAT

複数の文字列値を連結し、連続した文字列を返します。

CONCAT_WS

最初のパラメーターで指定された区切り文字を使用して、他のパラメーターで指定された文字列を連結します。

LEFT

文字列の先頭から指定された文字数を抽出します。

LISTAGG

複数行の列の値を文字列に集約します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

LPAD

文字列の左側に特定の文字をパディングして、指定された長さにします。

LTRIM

文字列の左側(先頭)から特定の文字を削除します。

REGEXP_MATCH

正規表現を使用して文字列の内容を照合します。一致条件を満たすコンテンツフラグメントが配列に表示されます。

RPAD

文字列の右側に特定の文字をパディングして、指定された長さにします。

RTRIM

文字列の右側(末尾)から特定の文字を削除します。

TRIM

文字列の先頭、末尾、または両側から特定の文字を削除します。

STRING_AGG

複数行の列の値を文字列に集約します。

SPLIT_PART

特定のデリミタに基づいて文字列を分割し、N 番目のセグメントを返します。

STRING || STRING

2 つの文字列を連結します。

SUBSTR

指定された位置から文字列の末尾まで抽出された部分文字列、または指定された位置から抽出された指定された長さの部分文字列を返します。

SUBSTRING

特定のルールに一致する部分文字列を文字列から抽出します。

その他の文字列関数

ASCII

文字列の最初の文字の ASCII 値を返します。

CHAR_LENGTH

文字数で計算された文字列の長さを返します。

CHR

エンコードされた値に一致する文字を返します。

INITCAP

文字列の各単語の最初の文字を大文字に変換し、各単語の他の文字を小文字に変換します。

INSTR

特定の範囲に基づいて、文字列内の部分文字列の位置を返します。部分文字列が使用できない場合、この関数は 0 を返します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

LENGTH

バイト数で計算された文字列の長さを返します。UTF-8 文字セットを使用して文字列をエンコードする場合、1 つの漢字は 3 バイトを占め、1 つの数字または文字は 1 バイトを占めます。

LOWER

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

MD5

文字列の MD5 ハッシュを計算します。MD5 ハッシュは 16 進数です。

OCTET_LENGTH

バイト数で計算された文字列の長さを返します。

PLVSTR.RVRS

文字列の順序を反転します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

POSITION

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

PARSE_IDENT

SQL 識別子のルールに従う文字列を解析します。

QUOTE_IDENT

SQL ステートメントで引用符で囲まれた識別子として文字列を返します。

QUOTE_LITERAL

SQL ステートメントで文字列リテラルとして使用される引用符で囲まれた文字列として文字列を返します。

REPEAT

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

REPLACE

文字列内の部分文字列を別の部分文字列に置き換えます。

REGEXP_REPLACE

POSIX 正規表現を使用して、部分文字列を別の部分文字列に置き換えます。

REGEXP_SPLIT_TO_ARRAY

正規表現に基づいて文字列を分割し、配列を返します。

REGEXP_SPLIT_TO_TABLE

文字列を分割し、分割されたデータを行に変換します。この関数は、行を列に転置するために使用できます。

ROW

数式が配置されている行の番号を返します。この関数は、Hologres V1.3 以降でサポートされています。

STARTS_WITH

文字列が特定のプレフィックスで始まるかどうかを確認します。

STRPOS

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

TO_HEX

数値をそれと同等の 16 進数値に変換します。

TO_NUMBER

文字列を数値に変換します。

TRANSLATE

文字列内の文字を指定された文字に置き換えます。

UPPER

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

文字列の連結、分割、およびパディング

STRING || STRING

  • 説明:2 つの文字列を連結します。

    <string_value1> TEXT || <string_value2> TEXT
  • パラメーター

    string_value1 および string_value2:連結する文字列式。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:HologreSQL。
    SELECT 'Holo' || 'greSQL';

CONCAT

  • 説明:複数の文字列値を連結し、連続した文字列を返します。

    CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)
  • パラメーター

    str1,...,strN: 連結する文字列。

    説明

    NULL 値の文字列は無視されます。

  • 戻り値

    TEXT 型の値が返されます。

  • SELEC CONCAT('abcde', 2, NULL, 22);

    次の結果が返されます。

    concat
    ---------
    abcde222

CONCAT_WS

  • 説明:最初のパラメーターで指定された区切り文字を使用して、他のパラメーターで指定された文字列を連結します。

    CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...] ])
    説明

    値 any は、すべてのデータ型の文字列がサポートされていることを示します。

  • パラメーター

    • sep:必須。文字列を連結するために使用される区切り文字。

      説明

      このパラメーターを NULL に設定すると、この関数は NULL を返します。

    • str:必須。連結する文字列。

      説明

      NULL 値の文字列は無視されます。

  • 戻り値

    TEXT 型の値が返されます。

  • SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);

    次の結果が返されます。

    concat_ws
    ----------
    abcde,2,22

LISTAGG

  • 説明:複数行の列の値を文字列に集約します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

    LISTAGG(<str1> TEXT [, <str2> TEXT])
  • パラメーター

    • str1:必須。値を集約する文字列式または列。

    • str2:オプション。区切り文字。

  • 戻り値

    TEXT 型の値が返されます。

    • 例 1

      -- 戻り値: hologres.
      SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);
    • 例 2

      -- 戻り値: holo.gres.
      SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);

SUBSTRING

  • 説明:特定のルールに一致する部分文字列を文字列から抽出します。

    • 文字列から指定された位置の部分文字列を抽出します。

      SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])
    • POSIX 正規表現に一致する部分文字列を文字列から抽出します。

      SUBSTRING(<str> TEXT FROM <pattern> TEXT)
    • SQL 正規表現に一致する部分文字列を文字列から抽出します。

      SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT )
  • パラメーター

    • str:必須。部分文字列を抽出する文字列。

    • num_start および num_end:オプション。開始位置と終了位置。

    • pattern:必須。部分文字列が抽出される基になる正規表現。

    • escape:必須。エスケープ文字。

      説明

      正規表現では、ピリオド (.)、アスタリスク (*)、プラス記号 (+) などの特定の文字には特別な意味があります。これらの文字を特別な意味ではなく文字そのものとして一致させる場合は、前にエスケープ文字を追加する必要があります。

  • 戻り値

    TEXT 型の値が返されます。

    • 例 1:文字列から指定された位置の部分文字列を抽出します。

      SELECT SUBSTRING('Thomas' FROM 2 FOR 3);

      次の結果が返されます。

      substring
      ----------
      hom
    • 例 2:POSIX 正規表現に一致する部分文字列を文字列から抽出します。

      SELECT SUBSTRING('Thomas' FROM '...$');

      次の結果が返されます。

      substring
      ----------
      mas
    • 例 3:SQL 正規表現に一致する部分文字列を文字列から抽出します。

      SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');

      次の結果が返されます。

      substring
      ----------
      oma

REGEXP_MATCH

  • 説明:正規表現を使用して文字列の内容を照合します。一致条件を満たすコンテンツフラグメントが配列に表示されます。

    REGEXP_MATCH(<str> TEXT, <pattern> TEXT) 
  • パラメーター

    • str:必須。照合する文字列。

    • pattern:必須。正規表現。

  • 戻り値

    ARRAY 型の値が返されます。

  • SELECT regexp_match('foobarbequebaz', '(bar)(beque)');

    次の結果が返されます。

    regexp_match
    ------------
    {bar,beque}

SUBSTR

  • 説明

    • 指定された位置から文字列の末尾まで抽出された部分文字列を返します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

      SUBSTR(<str> TEXT, <num_start> INTEGER)

      パラメーター

      • str:必須。部分文字列を抽出する文字列。

      • num_start:部分文字列を抽出する開始位置。

    • 指定された位置から抽出された指定された長さの部分文字列を返します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

      SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)

      パラメーター

      • str:必須。部分文字列を抽出する文字列。

      • num_start:部分文字列を抽出する開始位置。

      • len:抽出する部分文字列の長さ。

  • 戻り値

    TEXT 型の値が返されます。

    • 例 1:4 番目の文字から文字列の末尾まで部分文字列を抽出します。

      -- 戻り値:ogres。
      SELECT SUBSTR('Hologres', 4);
    • 例 2:文字列の 2 番目の文字から始まる 5 文字の部分文字列を抽出します。

      -- 戻り値:ologr。
      SELECT SUBSTR('Hologres', 2, 5);

SPLIT_PART

  • 説明: 特定のデリミタに基づいて文字列を分割し、N 番目のセグメントを返します。

    SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)
  • パラメーター

    • str:必須。分割する文字列。

    • delimiter:必須。文字列の分割に使用する区切り文字。

    • num:必須。返す分割セグメントのシーケンス番号。値は整数でなければならず、1 から始まります。

  • 戻り値

    TEXT 型の値が返されます。 num の値が分割セグメントの数を超える場合、この関数は NULL を返します。

  • CREATE TABLE split_part_test (
        a text
    );
    INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
    SELECT split_part(a, '/', 2) FROM split_part_test;

    次の結果が返されます。

    split_part 
    ----------
    b
    b1

STRING_AGG

  • 説明:複数行の列の値を文字列に集約します。

    STRING_AGG(expression [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]

    使用上の注意:Hologres V1.3 以降でのみフィルター条件がサポートされています。

    説明

    フィルター条件を使用する場合は、Hologres DingTalk グループに参加してアップグレードを申請するか、インスタンスを手動でアップグレードする必要があります。インスタンスを手動でアップグレードする方法の詳細については、「インスタンスのアップグレード」をご参照ください。Hologres DingTalk グループへの参加方法の詳細については、「Hologres のオンラインサポートを受ける」をご参照ください。

  • パラメーター

    • expression:必須。値を集約する式または列。

    • order_by_clause:オプション。値を文字列に集約する前に expression 値をソートする基になる順序。このパラメーターを指定しない場合、データベース内のデータは適切な方法でソートされる場合があります。

    • FILTER ( WHERE filter_clause ):オプション。値を集約する行をフィルターするために使用される条件。

  • 戻り値

    TEXT 型の値が返されます。

    • 例 1

      CREATE TABLE city_test (
          country text,
          city text
      );
      
      INSERT INTO city_test
          VALUES ('China', 'Shanghai'), ('China', 'Taipei'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('Britain', 'London');
      
      SELECT
          STRING_AGG(city, ',')
      FROM
          city_test;

      次の結果が返されます。

      string_agg
      ------------------------
      Shanghai,Taipei,Tokyo,Paris,London
    • 例 2

      CREATE TABLE name_text (
          student_id int,
          name text);
      INSERT INTO name_text
          VALUES (
              1, 'Jack'), (
              2, 'Mike'), (
              3, 'John'), (
              4, 'Saturday'
      );
      
      SELECT
          STRING_AGG(name, ',') FILTER (WHERE student_id > 2)
      FROM
          name_text;

      次の結果が返されます。

      string_agg
      ----------
      John,Saturday

LEFT

  • 説明:文字列の先頭から指定された文字数を抽出します。

    LEFT(<str> TEXT, <num> INT)
  • パラメーター

    • str:必須。部分文字列を抽出する文字列。

    • num:必須。文字列の先頭から抽出する文字数。値は整数でなければなりません。

      num が負の値に設定されている場合、最後の ‒num 文字を除く文字が返されます。

  • 戻り値

    TEXT 型の値が返されます。

  • SELECT LEFT('hologres', 4);

    次の結果が返されます。

    left
    ----
    holo

RIGHT

  • 説明:文字列の末尾から指定された文字数を抽出します。

    RIGHT(<str> TEXT, <num> INT)
  • パラメーター

    • str:必須。部分文字列を抽出する文字列。

    • num:必須。文字列の末尾から抽出する文字数。値は整数でなければなりません。

      num が負の値に設定されている場合、最初の ‒num 文字を除く文字が返されます。

  • 戻り値

    TEXT 型の値が返されます。

  • SELECT RIGHT('hologres', 4);

    次の結果が返されます。

    right
    ----------
    gres

TRIM

  • 説明: 文字列の先頭、末尾、または両側から特定の文字を削除します。

    TRIM([leading | trailing | both] [<characters> TEXT] FROM STRING)
  • パラメーター

    • トリミングする位置を指定するパラメーター:

      • leading: オプション。文字列の先頭 (左側) から特定の文字が削除されます。

      • trailing: オプション。文字列の末尾 (右側) から特定の文字が削除されます。

      • both: オプション。文字列の両側から特定の文字が削除されます。これはデフォルト値です。

    • characters: オプション。文字列から削除する文字のセット。

    • string: 必須。特定の文字を削除する文字列。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値: Tom.
    select TRIM(BOTH 'xyz' FROM 'yxTomxx');

BTRIM

  • 説明: 文字列の両側から特定の文字を削除します。

    BTRIM(<str> TEXT [, <characters> TEXT])
  • パラメーター

    • str: 必須。特定の文字を削除する文字列。

    • characters: オプション。文字列の両側から削除する文字のセット。

      説明

      このパラメーターで指定された文字は、全体としてではなく、個別に照合されます。

      characters パラメーターを指定しない場合、デフォルトでスペースが使用されます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:trim。
    SELECT BTRIM('xyxtrimyyx', 'xyz');

LTRIM

  • 説明: 文字列の左側 (先頭) から特定の文字を削除します。

    LTRIM(<str> TEXT [, <characters> TEXT])
  • パラメーター

    • str: 必須。特定の文字を削除する文字列。

    • characters: オプション。文字列の左側 (先頭) から削除する文字のセット。

      説明
      • このパラメーターで指定された文字は、全体としてではなく、個別に照合されます。

      • characters パラメーターを指定しない場合、デフォルトでスペースが使用されます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:test。
    SELECT LTRIM('zzzytest', 'xyz');

RTRIM

  • 説明:文字列の先頭、末尾、または両側から特定の文字を削除します。

    RTRIM(<str> TEXT [, <characters> TEXT])
  • パラメーター

    • str: 必須。特定の文字を削除する文字列です。

    • characters: オプション。文字列の右側 (末尾) から削除する文字セット。 characters パラメーターを指定しない場合、デフォルトでスペースが使用されます。

      説明

      このパラメーターで指定された文字は、全体としてではなく、個別に照合されます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:test。
    SELECT RTRIM('testxxzx', 'xyz');

LPAD

  • 説明: 指定された文字列の左側に特定の文字を埋め込み、指定された長さにします。

    LPAD(<str> TEXT, <length> INT [, <fill> TEXT])
  • パラメーター

    • str: 必須。特定の文字を埋め込む文字列。

    • length: 必須。返される文字列の長さ。

      説明

      特定の文字を埋め込む文字列の長さがこのパラメーターの値を超える場合、この関数は文字列の右側を指定された長さに切り捨てます。

    • fill: オプション。埋め込む文字。 スペース を指定しない場合、デフォルトでスペースが使用されます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値: xyxhi.
    SELECT LPAD('hi', 5, 'xy');

RPAD

  • 説明: 指定された文字列の右側に特定の文字を埋め込み、指定された長さにします。

    RPAD(<str> TEXT, <length> INT [, <fill> TEXT])
  • パラメーター

    • str: 必須。特定の文字を埋め込む文字列。

    • length: 必須。返される文字列の長さ。

      説明

      特定の文字を埋め込む対象の文字列の長さがこのパラメーターの値を超える場合、この関数は文字列の右側を指定された長さに切り詰めます。

    • fill: オプション。埋め込みに使用する文字。 fill パラメーターを指定しない場合、デフォルトでスペースが使用されます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:hixyx。
    SELECT RPAD('hi', 5, 'xy');

その他の文字列関数

TO_NUMBER

  • 説明: 文字列を数値に変換します。

    TO_NUMBER(<str1> TEXT, <str2> TEXT)
  • パラメーター

    • str1: 変換する文字列。

    • str2: 変換する文字列を解析するために使用するフォーマットモデル。

  • 戻り値

    NUMERIC 型の値が返されます。

  • -- 戻り値:-12454.8。
    SELECT TO_NUMBER('12,454.8-', '99G999D9S');

REPLACE

  • 説明: 文字列内の部分文字列を別の部分文字列に置き換えます。

    REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT) 
  • パラメーター

    • str: 必須。部分文字列を置き換える文字列。

    • old_str: 必須。置き換える部分文字列。

    • new_str: 必須。 old_str を置き換えるために使用する部分文字列。

  • 戻り値

    TEXT 型の値が返されます。

  • CREATE TABLE animal_test (
        animal text,
        color text
    );
    
    INSERT INTO animal_test
        VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
    
    SELECT
        animal,
        REPLACE(color, 'white', 'multicolored')
    FROM
        animal_test;

    次の結果が返されます:

    animal |  replace   
    -------------------
    dog | multicolored
    cat | multicolored
    tiger | yellow

REGEXP_REPLACE

  • 説明: POSIX 正規表現を使用して、部分文字列を別の部分文字列に置き換えます。

    REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT]) 
  • パラメーター

    • str: 必須。部分文字列を置き換える文字列。

    • regex: 必須。正規表現。

    • replacement: 必須。一致した部分文字列を置き換えるために使用する部分文字列。

    • flags: オプション。正規表現の一致を示すフラグ。

  • 戻り値

    TEXT 型の値が返されます。

  • CREATE TABLE a_test (
        a text
    );
    INSERT INTO a_test VALUES ('Abcd1234abCd');
    
    SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;

    次の結果が返されます:

    regexp_replace 
    --------------
    Abcd77bCd

PLVSTR.RVRS

  • 説明: 文字列の順序を反転します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

    • 文字列から部分文字列を抽出し、部分文字列の順序を反転します。文字列内の部分文字列の開始位置と終了位置が指定されています。

      PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)
    • 文字列から部分文字列を抽出し、部分文字列の順序を反転します。部分文字列は、指定された位置から文字列の末尾まで抽出されます。

      PLVSTR.RVRS(<str> TEXT, <start> INTEGER)
    • 文字列全体の順序を反転します。

      PLVSTR.RVRS(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

    • 例 1: 文字列から部分文字列を抽出し、部分文字列の順序を反転します。文字列内の部分文字列の開始位置と終了位置が指定されています。

      -- 戻り値:rg。
      SELECT PLVSTR.RVRS('Hologres', 5, 6);
    • 例 2: 文字列から部分文字列を抽出し、部分文字列の順序を反転します。部分文字列は、指定された位置から文字列の末尾まで抽出されます。

      -- 戻り値:sergo。
      SELECT PLVSTR.RVRS('Hologres', 4);
    • 例 3: 文字列全体の順序を反転します。

      -- 戻り値:sergoloH。
      SELECT PLVSTR.RVRS('Hologres');

CHAR_LENGTH

  • 説明: 文字数で計算された文字列の長さを返します。

    CHAR_LENGTH(<str> TEXT)
  • 戻り値

    INT 型の値が返されます。

  • -- 戻り値: 4。
    SELECT CHAR_LENGTH('jose');

LENGTH

  • 説明: バイト数で計算された文字列の長さを返します。文字列のエンコードに UTF-8 文字セットを使用する場合、1 つの漢字は 3 バイトを占め、1 つの数字または文字は 1 バイトを占めます。

    LENGTH(<str> TEXT)
  • 戻り値

    INT 型の値が返されます。

  • -- 戻り値:4。
    SELECT LENGTH('jose');
    説明

    1 つの英字は 1 バイトを占めます。したがって、英字の LENGTH 関数の計算結果は、CHAR_LENGTH 関数の計算結果と同じです。

LOWER

  • 説明: 文字列を小文字に変換します。

    LOWER(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:tom。
    SELECT LOWER('TOM');

UPPER

  • 説明: 文字列を大文字に変換します。

    UPPER(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:TOM。
    SELECT UPPER('tom');

INITCAP

  • 説明: 文字列内の各単語の最初の文字を大文字に変換し、各単語の他の文字を小文字に変換します。

    INITCAP(<str> TEXT)
    説明

    単語は文字と数字で構成されているため、文字または数字以外の文字で区切られます。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:Hi Thomas。
    SELECT INITCAP('hi THOMAS');

OCTET_LENGTH

  • 説明: バイト数で計算された文字列の長さを返します。

    OCTET_LENGTH(<str> TEXT)
  • 戻り値

    INT 型の値が返されます。

  • -- 戻り値:4。
    SELECT OCTET_LENGTH('jose');

POSITION

  • 説明: 文字列内の部分文字列の位置を返します。

    POSITION(<substr> TEXT IN <str> TEXT)
  • パラメーター

    • substr: 必須。部分文字列。

    • str:文字列。

  • 戻り値

    INT 型の値が返されます。

  • -- 戻り値:3。
    SELECT POSITION('om' IN 'Thomas');

STRPOS

  • 説明: 文字列内の部分文字列の位置を返します。

    STRPOS(<str> TEXT, <substr> TEXT)
  • パラメーター

    • str: 必須。文字列。

    • substr: 必須。部分文字列。

  • 戻り値

    INT 型の値が返されます。

  • -- 戻り値:2。
    SELECT STRPOS('high', 'ig');

INSTR

  • 説明: 特定の範囲に基づいて、文字列内の部分文字列の位置を返します。部分文字列がない場合、この関数は 0 を返します。この関数は Oracle と互換性があります。この関数を使用する前に、Orafce 拡張機能をインストールする必要があります。詳細については、「サポートされている Oracle 関数」をご参照ください。

    INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER, <nth> INTEGER])
  • パラメーター

    • str: 必須。文字列。

    • patt: 必須。一致させる部分文字列。

    • start: オプション。部分文字列の一致を開始する位置。このパラメーターを指定しない場合、文字列の先頭から部分文字列が一致されます。

    • nth: オプション。部分文字列の n 番目の出現位置が返されます。このパラメーターを指定しない場合、この関数は部分文字列の最初の出現位置を返します。

  • 戻り値

    INT 型の値が返されます。

    • 例 1

      -- 戻り値:4。
      SELECT INSTR('Hologres', 'o', 1, 2);
    • 例 2

      -- 戻り値:2。
      SELECT INSTR('Hologres', 'o', 1, 1);
    • 例 3

      -- 戻り値:4。
      SELECT INSTR('Hologres', 'o', 4);
    • 例 4

      -- 戻り値:2。
      SELECT INSTR('Hologres', 'o');

MD5

  • 説明: 文字列の MD5 ハッシュを計算します。MD5 ハッシュは 16 進数です。

    MD5(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:900150983cd24fb0d6963f7d28e17f72。
    SELECT MD5('abc');

PARSE_IDENT

  • 説明: SQL 識別子のルールに従う文字列を解析します。

    PARSE_IDENT(<quali_iden> TEXT [,...] )
  • パラメーター

    • parse_ident: 必須。解析する文字列。ほとんどの場合、データベースオブジェクトの完全修飾識別子です。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:{"SomeSchema", "sometable"}。
    SELECT PARSE_IDENT('"SomeSchema".someTable');

QUOTE_IDENT

  • 説明: SQL ステートメントで引用符で囲まれた識別子として文字列を返します。

    QUOTE_IDENT(<str> TEXT)
    説明

    この関数は、文字列に識別子以外の文字が含まれている場合、または大文字と小文字が区別されない場合に、二重引用符(")を追加します。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:"Foo bar"。
    SELECT QUOTE_IDENT('Foo bar');

QUOTE_LITERAL

  • 説明: SQL ステートメントで文字列リテラルとして使用される引用符で囲まれた文字列として文字列を返します。

    QUOTE_LITERAL(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:'O''Reilly'。
    SELECT QUOTE_LITERAL(E'O\'Reilly');

ASCII

  • 説明: 文字列の最初の文字の ASCII 値を返します。

    ASCII(<str> TEXT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:120。
    SELECT ASCII('x');

CHR

  • 説明: エンコードされた値に一致する文字を返します。

    CHR(<num> INT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:A。
    SELECT CHR(65);

REPEAT

  • 説明: 文字列を指定された回数だけ繰り返します。

    REPEAT(<str> TEXT, <number> INT)
  • パラメーター

    • str: 必須。文字列。

    • number: 必須。文字列を繰り返す回数。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:PgPgPgPg。
    SELECT REPEAT('Pg', 4);

STARTS_WITH

  • 説明: 文字列が特定のプレフィックスで始まるかどうかを確認します。

    STARTS_WITH(<str> TEXT, <prefix> TEXT)
  • パラメーター

    • str: 必須。文字列。

    • prefix: 必須。プレフィックス。

  • 戻り値

    BOOLEAN 型の値が返されます。文字列が指定されたプレフィックスで始まる場合、この関数は true を示す t を返します。それ以外の場合、この関数は false を示す f を返します。

  • -- 戻り値:t。
    SELECT STARTS_WITH('alphabet', 'alph');

REGEXP_SPLIT_TO_TABLE

  • 説明: 文字列を分割し、分割されたデータを行に変換します。この関数は、行を列に転置するために使用できます。

    REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)
  • パラメーター

    • str: 必須。分割する文字列。

    • pattern: 必須。文字列を分割するための正規表現。文字列は、正規表現の特殊文字と構造に基づいて分割されます。

  • 戻り値

    TEXT 型の値が返されます。

  • CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test
        VALUES ('Ava', 'singing, dancing'), ('Bob', 'playing football, running, painting'), ('Jack', 'arranging flowers, writing calligraphy, playing the piano, sleeping');
    
    SELECT
        name,
        REGEXP_SPLIT_TO_TABLE(intrests, ',')
    FROM
        interests_test;
    

    次の結果が返されます:

    name | regexp_split_to_table
    ---------------------------
    Ava | singing
    Ava | dancing
    Bob | playing football
    Bob | running
    Bob | painting
    Jack | arranging flowers
    Jack | writing calligraphy
    Jack | playing the piano
    Jack | sleeping

REGEXP_SPLIT_TO_ARRAY

  • 説明: 正規表現に基づいて文字列を分割し、配列を返します。

    REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
  • パラメーター

    • str: 必須。分割する文字列。

    • pattern: 必須。文字列を分割するための正規表現。文字列は、正規表現の特殊文字と構造に基づいて分割されます。

  • 戻り値

    ARRAY 型の値が返されます。

  • CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test
        VALUES ('Ava', 'singing, dancing'), ('Bob', 'playing football, running, painting'), ('Jack', 'arranging flowers, writing calligraphy, playing the piano, sleeping');
    
    SELECT
        name,
        REGEXP_SPLIT_TO_ARRAY(intrests, ',')
    FROM
        interests_test;
    

    次の結果が返されます:

    name | regexp_split_to_array
    ----------------------------
    Ava | {singing, dancing}
    Bob | {playing football, running, painting}
    Jack | {arranging flowers, writing calligraphy, playing the piano, sleeping}

TO_HEX

  • 説明: 数値をそれと同等の 16 進数値に変換します。

    TO_HEX(<number> INT OR BIGINT)
  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:7fffffff。
    SELECT TO_HEX(2147483647);

TRANSLATE

  • 説明: 文字列内の文字を指定された文字に置き換えます。

    TRANSLATE(<str> TEXT, FROM <substr> TEXT, TO <newstr> TEXT)
  • パラメーター

    • str: 必須。文字列。

    • substr: 必須。置き換える部分文字列。

    • newstr:必須。substr を置き換えるために使用する部分文字列。

  • 戻り値

    TEXT 型の値が返されます。

  • -- 戻り値:a2x5。
    SELECT TRANSLATE('12345', '143', 'ax');

ROW

  • 説明: 数式が配置されている行の番号を返します。

    ROW()

    使用上の注意: この関数は、Hologres V1.3 以降でのみサポートされています。

    説明

    Hologres インスタンスが以前のバージョンの場合、インスタンスを手動でアップグレードするか、Hologres DingTalk グループに参加してアップグレードを申請してください。詳細については、「Hologres のオンラインサポートを受ける」をご参照ください。

  • 戻り値

    ARRAY 型または TEXT 型の値が返されます。

  • CREATE TABLE row_test (
        a text,
        b text
    );
    
    INSERT INTO row_test
        VALUES ('0', '0'), ('1', '0');
    
    SELECT
        a,
        b
    FROM
        row_test
    WHERE
        ROW (a, b) = ROW (b, a);

    次の結果が返されます:

    a | b 
    ------
    0 | 0