转换此字符串:
n1=10;n2=50;n3=60;n4=20
Run Code Online (Sandbox Code Playgroud)
使用这样的东西(在Postgres 9.x中):
select *
from (some_engine_to_convert_this('n1=10;n2=50;n3=60;n4=20')) t
Run Code Online (Sandbox Code Playgroud)
得到这样的结果:
Name Value
v1 10
v2 50
v3 60
v4 20
Run Code Online (Sandbox Code Playgroud)
PS:我无法创建任何功能,所以我只需要使用内置函数的Postgres.
提前致谢.
select split_part(nv, '=', 1) as name,
split_part(nv, '=', 2) as value
from (
select unnest(string_to_array('n1=10;n2=50;n3=60;n4=20',';'))
) as t (nv);
Run Code Online (Sandbox Code Playgroud)
string_to_array首先创建一个键/值对数组.unnest将其转换为行,然后使用从结果中提取键/值元素split_part.
或者unnest,string_to_array可以组合使用和组合,regexp_split_to_table但正则表达式函数通常较慢.不确定哪一个会更有效率.
SQLFiddle示例:http://sqlfiddle.com/#!15/d41d8/2991
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |