-1
jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf

上記の文字列には、& で始まり = で終わる文字が含まれています。たとえば、&name= があり、上記の文字列からこれが必要です。

同様に &id=, &class= が必要です

単一の列の下に出力が必要です。

Final Extract
----------------------
&id=, &class=, &name=

誰かがこれについてのクエリを書くのを手伝ってくれますか?

4

2 に答える 2

1

あなたはこれを試すことができます:

select regexp_replace('jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf', '\\w*?(&.*?=)\\w+((?=&)|$)', '\\1, ', 'g');

結果:

     regexp_replace
-------------------------
 &name=, &id=, &class=,

次に、最後のを削除するのはあなた次第です,

regexp_replace関数は、バージョン8.1以降で使用できます。

于 2010-09-09T12:43:46.677 に答える
1

各変数とともに値が必要な場合は、「&」で配列に分割してから、目的の要素のスライスを取得することでこれを実装します。

SELECT (string_to_array('jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf','&'))[2:4];

PostgreSQL 8.4 での出力 (配列型):

{name=ijkjkjkjkjkjk,id=kdjkjkjkjkjkjjjd,class=kdfjjfjdhfjhf}

サンプル文字列は非常に広いため、配列のスライスをより明確に示す一般的な形式を次に示します。

SELECT ((string_to_array(input_field,'&'))[2:4];

注: 配列のスライスを機能させるには、string_to_array() 呼び出しを余分な括弧で囲む必要があります。そうしないと、エラーが発生します。

于 2010-09-09T13:46:31.517 に答える