[英]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.