PL / SQL选择 - 将列数据转换为每行1个字符

时间:2014-02-17 02:38:15

标签: variables loops select plsql substr

我正在尝试创建一个SQL语句,它将从表中获取8个250列字段,并将它们转换为带行号的2000行。
我不知道如何逐个字符地阅读(大多数字符是空白的)。 如何使用将值增加一的变量? 我尝试从myTable中选择substr(myFieldA,varA,1) 但它不喜欢变量,我也如何做循环语句。

例如YYN YN N

我希望它显示如下行号。

001 Y
002 Y
003 N
004 
005 
006 Y
007 N
008
009 N
010

1 个答案:

答案 0 :(得分:0)

您可以使用此查询拆分其中一个字段:

SELECT 'A' Field, r Col, SUBSTR(myFieldA,r,1) Val
FROM myTable
    ,(SELECT ROWNUM r FROM DUAL CONNECT BY LEVEL <= 250);

您可以对所有8列执行相同操作,例如:

SELECT 'A' Field, r Col, SUBSTR(myFieldA,r,1) Val
FROM myTable
    ,(SELECT ROWNUM r FROM DUAL CONNECT BY LEVEL <= 250)
UNION ALL
SELECT 'B' Field, r Col, SUBSTR(myFieldB,r,1) Val
FROM myTable
    ,(SELECT ROWNUM r FROM DUAL CONNECT BY LEVEL <= 250)
UNION ALL
... etc....
SELECT 'H' Field, r Col, SUBSTR(myFieldH,r,1) Val
FROM myTable
    ,(SELECT ROWNUM r FROM DUAL CONNECT BY LEVEL <= 250)
;