台灣最大程式設計社群網站
線上人數
1487
 
會員總數:239092
討論主題:185526
歡迎您免費加入會員
討論區列表 >> MS SQL >> MS SQL 欄 字串切割 轉列
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MS SQL 欄 字串切割 轉列
價值 : 150 QP  點閱數:174 回應數:10

樓主

Chen Rickey
門外漢
0 2
26 4
發送站內信

目前資料如下

A001 B001
S000001 XXXXXXXXXXXX,ZZZZZZZZZZZZ,OOOOOOOOOOOO,,,,,,,

想要SHOW 如下

S000001,XXXXXXXXXXXX
S000001,ZZZZZZZZZZZZ
S000001,OOOOOOOOOOOO

,,,,內沒有數值不顯示


請大神們提供做法,點數奉上

效能上需要好一點 資料筆數一天處理量約1000筆左右



搜尋相關Tags的文章: [ MSSQL ] ,
本篇文章發表於2017-03-09 11:38
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

Chen Rickey
檢舉此回應
A001 欄1 S000001

B001 欄2 XXXXXXXXXXXX,ZZZZZZZZZZZZ,OOOOOOOOOOOO,,,,,,,
本篇文章回覆於2017-03-09 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
試試這個

select A001 ,value from @temptable CROSS APPLY STRING_SPLIT(B001 , ',') where value <>'' ;


本篇文章回覆於2017-03-09 14:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

羅伯斯
檢舉此回應

本篇文章回覆於2017-03-09 18:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

羅伯斯
檢舉此回應

本篇文章回覆於2017-03-09 18:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

羅伯斯
檢舉此回應
3樓的有誤,4樓的才對
本篇文章回覆於2017-03-09 18:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Chen Rickey
檢舉此回應
SELECT A欄名稱, SUBSTRING(B欄名稱,1,12) 新的欄位名稱A, SUBSTRING(B欄名稱,14,12) 新的欄位名稱B, SUBSTRING(B欄名稱,28,12) 新的欄位名稱C,,,,,,,
FROM 資料表名稱
WHERE LEN(SUBSTRING(B欄名稱,1,12)) > 0 OR LEN(SUBSTRING(B欄名稱,14,12)) > 0 OR LEN(SUBSTRING(B欄名稱,27,12)) > 0;

這樣拆很多欄而已 我需要的是轉成列
本篇文章回覆於2017-03-10 13:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

QOO
捐贈 VP 給 QOO 檢舉此回應
下面這個是拆成列的語法喔


本篇文章回覆於2017-03-10 13:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Chen Rickey
檢舉此回應
回覆7樓 我使用您提供的語法 會出現兩個錯誤

value 沒有此資料列

STRING_SPLIT 沒有這個函數
本篇文章回覆於2017-03-10 15:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

羅伯斯
檢舉此回應
利用暫存表,暫放拆解的資料,最後引用暫存資料表的內容
SQL語法如下:




本篇文章回覆於2017-03-11 02:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
最有價值解答

QOO
捐贈 VP 給 QOO 檢舉此回應
STRING_SPLIT 這個函數是SQL SERVER2016才出現的 Orz

那試試看下面的語法吧



本篇文章回覆於2017-03-13 11:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.