2017-12-04 12 views
-2

データのフェッチにDB2 dbを使用しています。私はのscenerioこのようなデータベースから値を取得したいとしている:列の値を行に分割するDB2

Select user, attributes 
From Data 
Order By DATE desc 
fetch first 1 rows only; 

出力:

user     attributes 
------    ------------    
user1    Name=Rahul|Branch=CSE|Year of Joining=2017 

私は以下のような行に「属性」の欄を分割さを取得する必要があります。

Name   Branch  Year of Joining 
-----   ------  ---------------- 
Rahul   CSE   2017 

クエリでこれを達成できますか?私を案内してください。

答えて

0

DB @ support regexp_substr()。これにより、次の操作を実行できます。

select regexp_substr(regexp_substr(attributes, '[^|]+', 1, 1), '[^=]+$', 1, 2) as name, 
     regexp_substr(regexp_substr(attributes, '[^|]+', 1, 2), '[^=]+$', 1, 2) as branch, 
     regexp_substr(regexp_substr(attributes, '[^|]+', 1, 3), '[^=]+$', 1, 2) as name 
from t;