如何在Oracle查询中将货币符号(如'USD', 'EUR', 'CNY'等)按照逗号分隔后转换为多个独立的列进行显示?
时间: 2024-10-19 11:07:52 浏览: 18
oracle字段分隔为多行显示
在Oracle SQL中,将货币符号作为字符串以逗号分隔并转换为多个独立的列,你需要先使用`REGEXP_SUBSTR()`函数逐个提取,然后创建临时表或视图来进行存储。以下是基本步骤:
1. **创建临时表或视图**:
```sql
CREATE GLOBAL TEMPORARY TABLE temp_currency
( currency_column VARCHAR2(10) )
ON COMMIT DELETE ROWS;
```
或者
```sql
CREATE OR REPLACE VIEW v_currency_split AS
SELECT level AS row_number,
REGEXP_SUBSTR('USD, EUR, CNY', '[^,]+', 1, level) AS currency
FROM DUAL
CONNECT BY REGEXP_SUBSTR('USD, EUR, CNY', '[^,]+', 1, level) IS NOT NULL
LIMIT 3; -- 提取前三个货币
```
2. **插入数据**:
对于字符串变量,先将其赋值给`currency_column`,然后插入:
```sql
INSERT INTO temp_currency (currency_column)
VALUES ('USD, EUR, CNY');
```
3. **查询结果**:
查询临时表或视图,得到每种货币作为独立列显示:
```sql
SELECT *
FROM temp_currency;
-- 或者
SELECT currency
FROM v_currency_split;
```
注意,这种方法只适用于固定长度的逗号分隔字符串,并且预设了最多提取3种货币。如果你想动态处理任意长度的输入,可能需要编写更复杂的PL/SQL过程。
阅读全文