【问题标题】: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

标签: sql oracle plsql


【解决方案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

【讨论】:

  • 把你的答案合二为一(或者最好删除另一个,这已经很不错了)
猜你喜欢
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
相关资源
最近更新 更多