
SQL SERVER查詢 希望得到
id resourceid
1 2
2 3
3 1
3 2
3 4
3 5
4 1
......
希望大神指點。。
uj5u.com熱心網友回復:
CREATE FUNCTION dbo.f_splite
(
@s VARCHAR(8000) , --待分拆的字串
@split VARCHAR(10) --資料分隔符
)
RETURNS @re TABLE (id INT,col VARCHAR(100) )
AS
BEGIN
DECLARE @splitlen INT
DECLARE @i INT = 1
SET @splitlen = LEN(@split + 'a') - 2
WHILE CHARINDEX(@split, @s) > 0
BEGIN
INSERT @re
VALUES ( @i,LEFT(@s, CHARINDEX(@split, @s) - 1) )
SET @s = STUFF(@s, 1, CHARINDEX(@split, @s) + @splitlen, '')
SET @i = @i +1
END
INSERT @re
VALUES ( @i,@s )
RETURN
END
GO
--測驗資料
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[resourceid] nvarchar(29))
Insert #T
select 1,N'1' union all
select 2,N'3' union all
select 3,N'1.2.3.4.5'
Go
--測驗資料結束
SELECT #T.id,
t.col
FROM #T
CROSS APPLY (SELECT * FROM dbo.f_splite([resourceid], '.') ) t;
uj5u.com熱心網友回復:
能直接select 出結果嘛。。不走function 因為在oracle看到過類似的方法。。uj5u.com熱心網友回復:
sqlserver 這樣的寫法非常復雜,可以用遞回來實作,但是分隔符,分割的長度位置等都要定義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/123657.html
標籤:疑難問題
上一篇:求助,devc++編譯不了
