我來記錄如下:轉到多個記錄
Item | Color Code
Bag | 1,2,3
我怎樣才能把這些記錄到:
Item | Color Code
Bag | 1
Bag | 2
Bag | 3
在SQL級別沒有新的程序的任何干預。
我有問題,構建一個軟件包和立方體沒有數據
我來記錄如下:轉到多個記錄
Item | Color Code
Bag | 1,2,3
我怎樣才能把這些記錄到:
Item | Color Code
Bag | 1
Bag | 2
Bag | 3
在SQL級別沒有新的程序的任何干預。
我有問題,構建一個軟件包和立方體沒有數據
的這種格式這將工作
with t1(Item,ColorCode) as
(select 'Bag', '1,2,3' from dual)
select Item,regexp_substr(ColorCode, '[^,]+', 1, level) result
from t1
connect by level <= length(regexp_replace(ColorCode, '[^,]+')) + 1;
謝謝你!它正在工作.. 我在Cognos應用了SQL(SQL type = Pass through)並且這個工作正常..但是我可能知道這是否會給db性能帶來額外的負擔?或者我應該如何衡量影響? –
如果數據以逗號分隔值存儲,那麼您必須使用正則表達式來提取它。所以這是一樣快,你可以檢索它。要查看性能,可以看到「解釋計劃」,但不能進一步降低性能。另外,如果答案適用於您,請點擊上面的勾號來接受(http://meta.stackexchange.com/questions/23138/how-to-accept-the-answer-on-stack-overflow)答案的左邊,以便它可以被關閉。 – Utsav
試試這個:
SELECT t.Item,
trim(regexp_substr(t.ColorCode, '[^,]+', 1, lines.column_value)) ColorCode
FROM t,
TABLE (CAST (MULTISET
(SELECT LEVEL FROM dual CONNECT BY LEVEL <= regexp_count(t.ColorCode, ',')+1)
AS sys.odciNumberList
)
) lines
謝謝你的解決方案! –
@ChooiLingSiToh: - 不客氣! –
是彩色的代碼總是1,2,3?有多少種顏色代碼?它們總是用逗號隔開嗎? – Utsav
不要將數據存儲爲逗號分隔值,它只會導致很多麻煩。每個項目一行是SQL方式! – jarlh
hi utsav和jarlh .. 這是來自廠商db的源數據..我不能做任何除了尋找解決方案.. T_T感謝您的及時回覆,這是解決我的瓶頸建立立方體.. 那裏是大約100 +代碼....我將只使用立方體技術綁定顏色描述,目的是減少源數據庫上的負載,而不是使用連接 –