2013-11-27 34 views
0

分隔值我有一個像從數據列

I~A~G~S 

我怎麼可以使用select查詢它們分開與數據的列。

輸出: 更新

Rows  Column(Data) 
    First  I 
    Second  A 
    Third  G 
    Fourth  S 
+1

這是你所期待的嗎? 選擇替換('I〜A〜G〜S','〜','')爲x; 你可以在oracle中使用replace函數。你用空格替換〜。 – Shann

+0

可能的重複http://stackoverflow.com/questions/18770581/oracle-split-multiple-comma-separated-values-in-oracle-table-to-multiple-rows – Noel

回答

2

如果喲ü正在使用Oracle數據庫,那麼它應該是如下:

select replace('I~A~G~S','~',' ') as x from dual; 

select replace(<fieldname>,'~',' ') from <tablename> 

爲不同行分割字符串,請檢查下面的查詢問題。

SELECT trim(regexp_substr(replace('I~A~G~S','~',','), '[^,]+', 1, LEVEL)) str_2_tab 
    FROM dual 
    CONNECT BY LEVEL <= regexp_count(replace('I~A~G~S','~',','), ',')+1; 
+0

非常感謝! –

+0

不客氣。 如果答案已回答您的所有問題,請標記爲已回答。 thnxs – Shann

+0

我們可以將I〜A〜G〜S分解爲不同的變量,如收入= I,年齡= A,性別= G和國家= S; –

2
declare @s varchar(10) 
set @s='I~A~G~S' 

select replace(@s,'~',' ') 

updated question

create table #vij11 (s varchar(100)) 

insert into #vij11(s) values ('I~A~G~S') 
SELECT 
    Split.a.value('.', 'VARCHAR(100)') AS String 
FROM (SELECT [s], 
     CAST ('<M>' + REPLACE([s], '~', '</M><M>') + '</M>' AS XML) AS String 
    FROM #vij11) AS A CROSS APPLY String.nodes ('/M') AS Split(a); 

fiddle demo

+0

我可以得到相同的值不同-2行。像我在第一排,然後在第二排A。 –

+0

你的意思是?像I A G S * 2 –

+0

第一行I,第二行A,第三行G,第四行S –