如何解决字符串拆分将保证传递的字符串的顺序
我遇到了一个问题,我需要确保字符串的拆分,这将保证其通过的拆分字符串的顺序。 示例:string = "a,b,c,d,e"
拆分后预期保证订单结果: 结果见附件。
我看到很多 ans 会给我拆分字符串,但我们知道临时表不能保证 string 的顺序。对于 SQL 2012 或更高版本,我需要这个,Oracle 10g 应该可以工作。
解决方法
您不会找到同时为 SQL Server 和 Oracle 执行此操作的单个查询,因为除此之外,它们的字符串解析函数具有不同的名称。
对于Oracle,this question有很多解决方案;但是,它们大多不适用于 Oracle 10g,因为它们依赖于 11g 或 12c 中引入的改进。 This answer 应该能够适应 [希望] 使其在 Oracle 10g 中工作(但我无处可测试,因为 Oracle 10g 现在非常,您真的应该寻找升级到新版本):
SELECT t.value,v.COLUMN_VALUE AS item
FROM table_name t
CROSS JOIN TABLE(
CAST(
MULTISET(
SELECT REGEXP_SUBSTR( t.value,'[^,]+',1,LEVEL )
FROM DUAL
CONNECT BY REGEXP_SUBSTR( t.value,LEVEL ) IS NOT NULL
)
AS SYS.ODCIVARCHAR2LIST
)
) v
对于样本数据:
CREATE TABLE TABLE_NAME ( value ) AS
SELECT 'a,b,c,d,e' FROM DUAL;
输出:
VALUE | 项目 |
---|---|
a,e | 一 |
a,e | b |
a,e | c |
a,e | d |
a,e | e |
dbfiddle here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。