このトピックでは、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