将管道分隔的字符串解析为列?
我有一列包含管道分隔值,例如:
'23|12.1| 450|30|9|78|82.5|92.1|120|185|52|11'
我想解析此列以用 12 个相应列填充表:month1、month2、month3...month12。
因此,month1 的值为 23,month2 的值为 12.1 等...
有没有一种方法可以通过循环或分隔符来解析它,而不必使用 substr 一次分隔一个值?
谢谢。
I have a column with pipe separated values such as:
'23|12.1| 450|30|9|78|82.5|92.1|120|185|52|11'
I want to parse this column to fill a table with 12 corresponding columns: month1, month2, month3...month12.
So month1 will have the value 23, month2 the value 12.1 etc...
Is there a way to parse it by a loop or delimeter instead of having to separate one value at a time using substr?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用
regexp_substr
(10g+):在PL/SQL中使用循环:
更新
您只有有12列,我会直接编写查询而无需循环,它将是比动态 SQL 性能更高、更容易维护(更不用说更容易编写):
You can use
regexp_substr
(10g+):With a loop in PL/SQL:
Update
You only have 12 columns, I would write the query direcly without a loop, it will be more performant and easier to maintain than dynamic SQL (not to mention infinitely easier to write):
我认为没有什么已经定义的东西。
orafaq 上几乎没有实现,我发现这个也是。
I don't think there's something already defined.
There are few implementations at orafaq and I found this also.
我有99个问题
所以我使用了正则表达式
现在我有100个问题
哈哈哈哈哈哈
只需将 delim 连接到开始和;字符串末尾
纯sql解决方案:
/
I had 99 problems
So I used regular expressions
Now I have 100 problems
hahahahahahaha
just concatenate the delim onto beginning & end of string
pure sql solution:
/