簡體   English   中英

誰能幫我寫一個SQL查詢

[英]Can anyone help me write a sql query

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

上面的字符串包含一些以&開頭並以=結尾的字符,例如,我們有&name =,而我只需要上面的字符串中的字符。

同樣,我需要&id =,&class =

我需要在單列下的輸出。

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

誰能幫我寫出對此的查詢。

您可以嘗試這樣:

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

結果:

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

然后,由您決定刪除最后一個,

regexp_replace函數在版本8.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()調用周圍有多余的括號,才能使數組切片起作用-否則會出現錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM