全部產品
Search
文件中心

Hologres:KeyValue函數

更新時間:Jun 30, 2024

本文為您介紹在Hologres中如何使用KeyValue函數。

使用限制

  • 僅Hologres V2.1及以上版本支援使用KeyValue函數,如果您的執行個體是V2.1以下版本,請您使用自助升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?

  • 使用KeyValue函數時,SQL語句中必須包含from <table>欄位。

函數介紹

KeyValue函數用於將字串str按照分隔字元split1切分成key-value對,並按分隔字元split2將key-value對進行切分,結果返回key所對應的value值。

  • 文法

    keyvalue(text <str>,[text <split1>,text <split2>,] text <key>)
  • 參數說明

    參數

    類型

    描述

    是否必選

    str

    TEXT

    待拆分的字串。

    split1

    TEXT

    用於作為分隔字元的字串。

    • 按照指定的分隔字元split1拆分源字串,如果沒有指定,則預設按照分號(;)拆分。

    • 當某個被split1拆分後的字串中有多個split2時,返回結果未定義。

    否,如果填寫,必須填上split2。

    split2

    TEXT

    用於作為分隔字元的字串。

    按照指定的分隔字元split2拆分split1分隔後的字串,如果沒有指定,按照冒號(:)拆分。

    否,如果填寫,必須填上split1。

    key

    TEXT

    字串按照split1和split2拆分後,返回匹配到的key值對應的value。

  • 傳回值說明

    返回TEXT類型。返回規則如下:

    • split1或split2值為NULL時,返回NULL。

    • str或key值為NULL,或拆分後的key-value對中沒有匹配的key時,返回NULL。

    • 如果有多個key-value對匹配,返回第一個匹配上的key對應的value。

使用樣本

  • 樣本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