Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle11g中多行拆分行并在jsp中获取_Sql_Oracle - Fatal编程技术网

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。