jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf
上面的字符串有一些字符以&开头。以=结尾 例如,我们有& name =,我只需要上面的字符串。
同样我需要& id =,& class =
我需要在一列下输出。
Final Extract
----------------------
&id=, &class=, &name=
任何人都可以帮我写一个查询。
答案 0 :(得分:1)
你可以试试这个:
select regexp_replace('jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf', '\\w*?(&.*?=)\\w+((?=&)|$)', '\\1, ', 'g');
结果:
regexp_replace
-------------------------
&name=, &id=, &class=,
然后由您删除最后一个,
。
regexp_replace函数在版本8.1及之后可用。
答案 1 :(得分: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()调用周围加上额外的括号才能使数组切片工作 - 否则会出错。