Sql 在Oracle11g中多行拆分行并在jsp中获取
下表如下:Sql 在Oracle11g中多行拆分行并在jsp中获取,sql,oracle,Sql,Oracle,下表如下: +------------+--------------+ | product id | Rates | +------------+--------------+ | 108 | 10, 20, 30 | +------------+--------------+ | 109 | 10,30 | +------------+--------------+ 我要创建以下内容: +------------+---------
+------------+--------------+
| product id | Rates |
+------------+--------------+
| 108 | 10, 20, 30 |
+------------+--------------+
| 109 | 10,30 |
+------------+--------------+
我要创建以下内容:
+------------+--------------+
| Name | Rates |
+------------+--------------+
| 108 | 10 |
+------------+--------------+
| | 20 |
+------------+--------------+
| | 30 |
+------------+--------------+
我想在oracle 11g中这样做,我在jsp中获取该行。假设该表名为
product\u rate
,下面的查询可能会得到答案:
SELECT CASE
WHEN LEVEL = 1 THEN product_id ELSE NULL END AS Name,
regexp_substr(Rates, '[^,]+', 1, LEVEL) Rates
FROM product_rate
CONNECT BY LEVEL <= length(regexp_replace(Rates, '[^,]+')) + 1;
选择案例
当LEVEL=1时,则product_id ELSE NULL END作为名称,
regexp_substr(速率,[^,]+',1级)速率
从产品价格
按级别连接假设该表被称为product\u rate
,下面的查询可能会得到答案:
SELECT CASE
WHEN LEVEL = 1 THEN product_id ELSE NULL END AS Name,
regexp_substr(Rates, '[^,]+', 1, LEVEL) Rates
FROM product_rate
CONNECT BY LEVEL <= length(regexp_replace(Rates, '[^,]+')) + 1;
选择案例
当LEVEL=1时,则product_id ELSE NULL END作为名称,
regexp_substr(速率,[^,]+',1级)速率
从产品价格
按级别连接假设该表被称为product\u rate
,下面的查询可能会得到答案:
SELECT CASE
WHEN LEVEL = 1 THEN product_id ELSE NULL END AS Name,
regexp_substr(Rates, '[^,]+', 1, LEVEL) Rates
FROM product_rate
CONNECT BY LEVEL <= length(regexp_replace(Rates, '[^,]+')) + 1;
选择案例
当LEVEL=1时,则product_id ELSE NULL END作为名称,
regexp_substr(速率,[^,]+',1级)速率
从产品价格
按级别连接假设该表被称为product\u rate
,下面的查询可能会得到答案:
SELECT CASE
WHEN LEVEL = 1 THEN product_id ELSE NULL END AS Name,
regexp_substr(Rates, '[^,]+', 1, LEVEL) Rates
FROM product_rate
CONNECT BY LEVEL <= length(regexp_replace(Rates, '[^,]+')) + 1;
选择案例
当LEVEL=1时,则product_id ELSE NULL END作为名称,
regexp_substr(速率,[^,]+',1级)速率
从产品价格
按级别连接尝试使用此查询:
WITH tab(product_id, Rates) AS
(SELECT 108, '10, 20, 30' FROM dual UNION ALL
SELECT 109, '10,30' FROM dual )
-------
--End of data
-------
SELECT CASE WHEN LEVEL = 1 THEN product_id ELSE NULL END AS product_id,
regexp_substr(rates, '[^,]+', 1, LEVEL) rates
FROM TAB
CONNECT BY regexp_substr(rates, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR rates = rates
and prior sys_guid() is not null;
输出:
| PRODUCT_ID | RATES |
|------------|-------|
| 108 | 10 |
| (null) | 20 |
| (null) | 30 |
| 109 | 10 |
| (null) | 30 |
尝试使用此查询:
WITH tab(product_id, Rates) AS
(SELECT 108, '10, 20, 30' FROM dual UNION ALL
SELECT 109, '10,30' FROM dual )
-------
--End of data
-------
SELECT CASE WHEN LEVEL = 1 THEN product_id ELSE NULL END AS product_id,
regexp_substr(rates, '[^,]+', 1, LEVEL) rates
FROM TAB
CONNECT BY regexp_substr(rates, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR rates = rates
and prior sys_guid() is not null;
输出:
| PRODUCT_ID | RATES |
|------------|-------|
| 108 | 10 |
| (null) | 20 |
| (null) | 30 |
| 109 | 10 |
| (null) | 30 |
尝试使用此查询:
WITH tab(product_id, Rates) AS
(SELECT 108, '10, 20, 30' FROM dual UNION ALL
SELECT 109, '10,30' FROM dual )
-------
--End of data
-------
SELECT CASE WHEN LEVEL = 1 THEN product_id ELSE NULL END AS product_id,
regexp_substr(rates, '[^,]+', 1, LEVEL) rates
FROM TAB
CONNECT BY regexp_substr(rates, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR rates = rates
and prior sys_guid() is not null;
输出:
| PRODUCT_ID | RATES |
|------------|-------|
| 108 | 10 |
| (null) | 20 |
| (null) | 30 |
| 109 | 10 |
| (null) | 30 |
尝试使用此查询:
WITH tab(product_id, Rates) AS
(SELECT 108, '10, 20, 30' FROM dual UNION ALL
SELECT 109, '10,30' FROM dual )
-------
--End of data
-------
SELECT CASE WHEN LEVEL = 1 THEN product_id ELSE NULL END AS product_id,
regexp_substr(rates, '[^,]+', 1, LEVEL) rates
FROM TAB
CONNECT BY regexp_substr(rates, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR rates = rates
and prior sys_guid() is not null;
输出:
| PRODUCT_ID | RATES |
|------------|-------|
| 108 | 10 |
| (null) | 20 |
| (null) | 30 |
| 109 | 10 |
| (null) | 30 |
更推荐在用户界面层做这件事,顺便说一句,我已经更新了答案。我不知道如何在用户界面中做。我正在使用jsp。更推荐在用户界面层做这件事,顺便说一句,我已经更新了答案。我不知道如何在用户界面中操作..我正在使用jsp。更推荐在用户界面层中操作,顺便说一句,我已经更新了答案。我不知道如何在用户界面中操作..我正在使用jsp。更推荐在用户界面层中操作,顺便说一句,我已经更新了答案。我不知道如何在用户界面中做。我正在使用jsp。