2017-06-16 92 views
-2

我的數據是存儲在表中以下格式: -我需要一個SQL查詢劈列在SQL服務器分隔的數據的多個列2012

AA | BBBBB | CCC(這裏有3串2分割'|')

SSSSS | ZZZ | AAAAA | FFFF(這裏存在由3分離4個字符串 '|')

aa|bbbbb|ccc 

sssss|zzz|aaaaa|ffff 

輸出應爲

|*col1|-------- |col2|--------- |col3|--------- |col4*| 

|sssss|-----  |zzz|----------  |aaaaa|-------|ffff| 

|aa|----------|bbbbb| --------|ccc|  ----------|NULL| 
+1

以這樣的方式存儲數據非常糟糕的分貝設計。閱讀關於規範化 – Jens

+1

請輸入格式文本(請參閱stackoverflow瀏覽),添加示例數據,添加您嘗試過的結果和獲得的結果,添加預期結果。使用文本格式的請求(不是圖像) – etsa

+0

然後嘗試使用搜索(在谷歌和stackoverflow),看看是否已經有類似的解決方案(例如,嘗試MSSQL SPLIT COLUMN) – etsa

回答

0

您可以使用下面的SQL通過拆分一列3列分隔符「|」:

select 
     col1, 
     substring(B.COL2,0,CHARINDEX('|', B.COL2)) col2, 
     substring(B.COL2,1+CHARINDEX('|', B.COL2),len(B.COL2)-CHARINDEX('|', B.COL2)) col3 
     FROM 
(
    select 
     substring(a.string,0,CHARINDEX('|', A.string)) col1, 
     substring(a.string,1+CHARINDEX('|', A.string),len(a.string)-CHARINDEX('|', A.string)) col2 
    from 
    (
     select 'aa|bbbbb|ccc' string 
    ) A 
) b 
相關問題