sqlserver中利用Tran_sql把逗號分隔的字串拆成臨時表
阿新 • • 發佈:2019-01-09
在與資料庫互動的過程中,我們經常需要把一串ID組成的字串當作引數傳給儲存過程獲取資料。很多時候我們希望把這個字串轉成集合以方便用於in操作。 有兩種方式可以方便地把這個以某種符號分隔的ID字串轉成臨時表。
* Code formatted by SoftTree SQL Assistant ?v6.5.278
* Time: 2015/8/4 11:22:40
************************************************************/ CREATE FUNCTION func_splitstring
(
@str NVARCHAR(MAX),
@split VARCHAR(10)
)
RETURNS @t TABLE(c1 VARCHAR(100))
AS
BEGIN
DECLARE @i INT
DECLARE @s INT
SET @i = 1
SET @s = 1
WHILE (@i > 0)
BEGIN
SET @i = CHARINDEX(@split, @str, @s)
IF (@i > 0)
BEGIN
INSERT @t
(
c1
)
VALUES
(
SUBSTRING(@str, @s, @i
[email protected])
)
END
ELSE
BEGIN
INSERT @t
(
c1
)
VALUES
(
SUBSTRING(@str, @s, LEN(@str) [email protected] + 1)
)
END
SET @s = @i + 1
END
RETURN
END
方式一:通過charindex和substring。
程式碼 /************************************************************* Code formatted by SoftTree SQL Assistant ?v6.5.278
* Time: 2015/8/4 11:22:40
************************************************************/ CREATE FUNCTION func_splitstring
(
@str NVARCHAR(MAX),
@split VARCHAR(10)
)
RETURNS @t TABLE(c1 VARCHAR(100))
AS
BEGIN
DECLARE @i INT
DECLARE @s INT
SET @i = 1
SET @s = 1
WHILE (@i > 0)
BEGIN
SET @i = CHARINDEX(@split, @str, @s)
IF (@i > 0)
BEGIN
INSERT @t
(
c1
)
VALUES
(
SUBSTRING(@str, @s, @i
)
END
ELSE
BEGIN
INSERT @t
(
c1
)
VALUES
(
SUBSTRING(@str, @s, LEN(@str) [email protected] + 1)
)
END
SET @s = @i + 1
END
RETURN
END
執行:select * from dbo.func_splitstring('1,2,3,4,5,6', ',')