oracle sql 查询将如何拆分列中的值?

问题描述 投票:0回答:1

我想将一列中的值拆分为 n 个部分,以 ~ 作为分隔符。我想对该列中的所有值执行此操作,假设每个部分的字符长度发生变化。

让我们将“147 Spadina Ave~Toronto~CA”作为列中的值。我想将它们分成 n 个部分,以 ~ 作为分隔符。我想在假设每个部分的字符长度发生变化的情况下执行该列中的所有值。

'147 Spadina Ave~Toronto~CA' 应分为 3 个不同的字符串,如下所示

士巴丹娜大街147号 多伦多 CA

像这样,让我们说长度发生变化,例如下一行而不是多伦多,它是温哥华,那么它应该分成

士巴丹娜大街147号 温哥华 CA

sql oracle oracle11g oracle-sqldeveloper
1个回答
0
投票

根据需要多次使用 REGEXP_SUBSTR。

SELECT 
   REGEXP_SUBSTR(T1.COLUMN_NAME, '[^~]+', 1, 1) String1,
   REGEXP_SUBSTR(T1.COLUMN_NAME, '[^~]+', 1, 2) String2,
   REGEXP_SUBSTR(T1.COLUMN_NAME, '[^~]+', 1, 3) String3,
   REGEXP_SUBSTR(T1.COLUMN_NAME, '[^~]+', 1, 4) String4
FROM TABLE_NAME T1;
© www.soinside.com 2019 - 2024. All rights reserved.