jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf
上面串有开始&与例如= 结束,我们有&名字的某些字符=,我只是需要这个从上面的字符串。谁能帮我写一个SQL查询
同样我需要& ID =,&类=
我需要一个单一的列下的输出。
Final Extract
----------------------
&id=, &class=, &name=
任何人都可以帮我写出这个查询。
jkdfhdjfhjh&name=ijkjkjkjkjkjk&id=kdjkjkjkjkjkjjjd&class=kdfjjfjdhfjhf
上面串有开始&与例如= 结束,我们有&名字的某些字符=,我只是需要这个从上面的字符串。谁能帮我写一个SQL查询
同样我需要& ID =,&类=
我需要一个单一的列下的输出。
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()调用附近有多余的括号才能使数组切片正常工作 - 否则将会出错。
这不是OP想要的。 – Toto 2010-09-09 15:55:22
是的,我意识到,我发布后,但我认为,否则,因为我不知道用什么解析字段名称和扔掉相关的值... – 2010-09-09 21:45:24
究竟哪个SQL方言? PostgreSQL的?正则表达式不是ANSI SQL标准AFAIK的一部分。 – 2010-09-09 09:46:54
是否没有可用的服务器端语言?在大多数情况下,这将是一个函数调用。 – 2010-09-09 09:47:46
所以在SQL数据库的字段中的字符串,对不对?解决方案是否需要纯粹的SQL?我认为在另一种语言中实现这一点要容易得多。 – Spudley 2010-09-09 09:56:12