oracle根据指定字符拆分字符串
时间: 2023-09-01 21:10:40 浏览: 196
Oracle截取JSON字符串内容的方法
在 Oracle 中,您可以使用 `SUBSTR`、`INSTR` 和 `REGEXP_SUBSTR` 等函数来根据指定字符拆分字符串。
1. 使用 `SUBSTR` 和 `INSTR` 函数
`SUBSTR` 函数可以返回一个字符串的子串,`INSTR` 函数可以返回一个字符串中指定子串的开始位置。通过不断调用这两个函数,您可以将一个字符串拆分成多个子串。
例如,要将字符串 `ABC,DEF,GHI` 按逗号拆分成多个子串,您可以使用以下 SQL 代码:
```
WITH data AS (
SELECT 'ABC,DEF,GHI' AS str FROM dual
)
SELECT
SUBSTR(str, 1, INSTR(str, ',', 1, level) - 1) AS col1,
SUBSTR(str, INSTR(str, ',', 1, level) + 1, INSTR(str, ',', 1, level+1) - INSTR(str, ',', 1, level) - 1) AS col2,
SUBSTR(str, INSTR(str, ',', 1, level+1) + 1) AS col3
FROM data
CONNECT BY level <= LENGTH(str) - LENGTH(REPLACE(str, ',', '')) + 1;
```
上述 SQL 代码将字符串 `ABC,DEF,GHI` 按逗号拆分成三列,分别为 `ABC`、`DEF` 和 `GHI`。
2. 使用 `REGEXP_SUBSTR` 函数
`REGEXP_SUBSTR` 函数可以根据正则表达式来提取字符串中的子串。通过使用逗号作为分隔符的正则表达式,您可以将一个字符串拆分成多个子串。
例如,要将字符串 `ABC,DEF,GHI` 按逗号拆分成多个子串,您可以使用以下 SQL 代码:
```
WITH data AS (
SELECT 'ABC,DEF,GHI' AS str FROM dual
)
SELECT
REGEXP_SUBSTR(str, '[^,]+', 1, 1) AS col1,
REGEXP_SUBSTR(str, '[^,]+', 1, 2) AS col2,
REGEXP_SUBSTR(str, '[^,]+', 1, 3) AS col3
FROM data;
```
上述 SQL 代码将字符串 `ABC,DEF,GHI` 按逗号拆分成三列,分别为 `ABC`、`DEF` 和 `GHI`。
阅读全文