台灣最大程式設計社群網站
線上人數
1147
 
會員總數:243651
討論主題:188248
歡迎您免費加入會員
討論區列表 >> MS SQL >> 逗號拆開做統計
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
逗號拆開做統計
價值 : 20 QP  點閱數:212 回應數:4

樓主

小裕
初學者
137 189
2784 341
發送站內信

我的欄位存放

2018090101. A100,A200
2018090102 A100
2018090103 A200,A300
如上是存放三筆資料

SQL語法如何查出
2018090101. A100
2018090101. A200
2018090102 A100
2018090103 A200
2018090103 A300





搜尋相關Tags的文章: [ 逗號拆開做統計 ] ,
本篇文章發表於2018-10-11 09:29
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

pilipala
檢舉此回應

SQL Server 2016 開始,有提供 STRING_SPLIT,參考看看
https://docs.microsoft.com/zh-tw/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
本篇文章回覆於2018-10-11 11:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小裕
檢舉此回應
我的是SQL 2008





===但都會出現引數資料類型 varchar 對 substring 函數的引數 2 無效。
本篇文章回覆於2018-10-11 19:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
看來不用指標不行

create FUNCTION [dbo].[Split]
(
@String NVARCHAR(4000),
@Delimiter NCHAR(1)
)
RETURNS TABLE
AS
RETURN
(
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos)
FROM Split
)


alter procedure proc_ts
as
create table #rep(
A nvarchar(50) null,
B varchar(50) null)

create table #rep1(
A nvarchar(50) null,
B varchar(50) null)

insert #rep select '2018090101.','A100,A200'
insert #rep select '2018090102','A100'
insert #rep select '2018090103','A200,A300'

declare @A nvarchar(50)
declare @B nvarchar(50)

DECLARE db_cursor CURSOR FOR
select A,B from #rep
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @A,@B

WHILE @@FETCH_STATUS = 0
BEGIN

insert #rep1
select @A,data from dbo.Split(@b,',')


FETCH NEXT FROM db_cursor INTO @A,@B
END
CLOSE db_cursor
DEALLOCATE db_cursor

select * from #rep1
本篇文章回覆於2018-10-16 11:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Hsu,Harry
檢舉此回應
https://sqlqna.blogspot.com/2018/01/csv-string-2-row-table.html
本篇文章回覆於2018-10-26 14:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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