我怎样才能把一根绳子分成不同的部分,然后把每一块分成一层?
Posted
技术标签:
【中文标题】我怎样才能把一根绳子分成不同的部分,然后把每一块分成一层?【英文标题】:How can I break an string in different pieces, and shift each piece split one level down? 【发布时间】:2019-10-31 01:22:05 【问题描述】:使用 SQL ORACLE:
我需要将一系列字符串分成单独的部分,并且每个后续部分都需要低于它之前的部分,即垂直列出,每行一个。我想在 '^' 符号处分隔字符串。
例如,字符串是'RT12^RT45^LT44^TR55'
结果需要是:
RT12
RT45
LT44
TR55
【问题讨论】:
如果您希望结果只有一行,我不确定“下移一级”是什么意思。您是否只想将克拉字符^
替换为回车 (CR) 或回车换行 (CR LF)(Windows 和 Unix 具有不同的行终止符)?
另外,为什么最后一行是TR^55
?你为什么不在插入符号上拆分它?
使用replace或translate函数将^替换为cr lf字符,或者用java代码做,更灵活
查看post
【参考方案1】:
SELECT
REGEXP_SUBSTR(TRIM('^' FROM 'RT12^RT45^LT44^TR55'), '[^\^]+', 1, LEVEL) AS res
FROM
DUAL
CONNECT BY
LEVEL <= REGEXP_COUNT(TRIM('^' FROM 'RT12^RT45^LT44^TR55'), '\^')+1
【讨论】:
把你的答案合二为一(或者最好删除另一个,这已经很不错了)以上是关于我怎样才能把一根绳子分成不同的部分,然后把每一块分成一层?的主要内容,如果未能解决你的问题,请参考以下文章