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

Hologres:KeyValue関数

最終更新日:Jan 11, 2025

このトピックでは、HologresでKeyValue関数を使用する方法について説明します。

制限事項

  • Hologres V2.1以降でのみKeyValue関数がサポートされています。HologresインスタンスのバージョンがV2.1より前の場合、HologresコンソールでHologresインスタンスを手動でアップグレードするか、Hologres DingTalkグループに参加してHologresテクニカルサポートに連絡してください。HologresコンソールでHologresインスタンスを手動でアップグレードする方法の詳細については、「インスタンスのアップグレード」の[手動アップグレード(ベータ)]セクションをご参照ください。テクニカルサポートを受ける方法の詳細については、[Hologresのオンラインサポートを受ける]をご参照ください。

  • SQLステートメントでKeyValue関数を使用する場合、SQLステートメントでfrom <table>フィールドを指定する必要があります。

説明

KeyValue関数は、strで指定された文字列をsplit1で指定された区切り文字に基づいてキーと値のペアに分割し、キーと値のペアをsplit2で指定された区切り文字に基づいて分割し、キーに対応する値を返します。

  • 構文

    keyvalue(text <str>,[text <split1>,text <split2>,] text <key>)
  • パラメーター

    パラメーター

    タイプ

    説明

    必須

    str

    TEXT

    分割する文字列。

    はい

    split1

    TEXT

    文字列をキーと値のペアに分割するための区切り文字。

    • このパラメーターが指定されていない場合、文字列はセミコロン(;)に基づいて分割されます。

    • split1に基づいて文字列を分割した後に取得されたキーと値のペアに複数のsplit2フィールドが含まれている場合、戻り値は定義されていません。

    いいえ(このパラメーターを指定する場合は、split2を指定する必要があります。)

    split2

    TEXT

    split1に基づいて文字列を分割した後に取得されたキーと値のペアを分割するための区切り文字。

    このパラメーターが指定されていない場合、キーと値のペアはコロン(:)に基づいて分割されます。

    いいえ(このパラメーターを指定する場合は、split1を指定する必要があります。)

    key

    TEXT

    文字列がsplit1とsplit2に基づいて分割された後に返される値を持つキー。

    はい

  • 戻り値

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

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

    • strまたはkeyの値がnullの場合、またはキーと値のペアを分割した後に一致するキーがない場合、nullが返されます。

    • 複数のキーが一致する場合、最初に一致したキーの値が返されます。

  • 例 1:定数または列に基づいて値を返します。

    begin;
     create table kvtest(
         a text,
         b text
         );
    commit;
    
    insert into kvtest values('0:1','a'),('2:3','b'),('1:2', '1'),('1:4', '1');
    
    -- 定数に基づいて値を返します。
    select keyvalue(a, '1') from kvtest;
    
    -- 次の結果が返されます。
    keyvalue
    ----------
    \N
    \N
    2
    4
    
    
    -- 列に基づいて値を返します。
    select keyvalue(a, b) from kvtest;
    
    -- 次の結果が返されます。
    keyvalue
    ----------
    \N
    \N
    2
    4
  • 例 2:指定された区切り文字に基づいて文字列を分割します。

    begin;
     create table kvtest(
         a text,
         b text
         );
    commit;
    
    insert into kvtest values('sp=11&&xd=1&&B2C=12&&tf=219', 'key');
    
    -- 指定された区切り文字に基づいて値を返します。
    select keyvalue(a,'&&','=', 'sp') from kvtest ;
    
    -- 次の結果が返されます。
    keyvalue
    ----------
    11