Split string via select statement

眉间皱痕 提交于 2019-12-11 04:21:11

问题


Fairly simple question, but seems impossibe to get an answer.

If I have this:

declare @Agent nvarchar(4000) = '2131235,334225';

Is there a select statement I can write to split the string where the coma is, WITHOUT having to write a function?

Something like:

SELECT SOME_SPLIT_LOGIC(@Agent)

I would like it to return:

Column
--------
2131235
334225

Please note I am use MS-SQL 2012


回答1:


DECLARE @LeftPart TABLE
(Agent int
)

DECLARE @RightPart TABLE
(Agent1 int
)

declare @Agent nvarchar(4000) = '2131235,334225';

INSERT INTO @LeftPart
SELECT LEFT(@Agent,7)

INSERT INTO @RightPart
SELECT RIGHT(@Agent,6)

SELECT * INTO #Temp
FROM 
(
SELECT * FROM @LeftPart
UNION ALL
SELECT * FROM @RightPart
)A

SELECT * FROM #Temp



回答2:


How about:

DECLARE @Agent VARCHAR(4000) = '2131235,334225'
DECLARE @Delimiter VARCHAR(1) = ','

;WITH CTE
AS
(
    SELECT 1 AS ID 
    UNION ALL
    SELECT ID + 1 FROM CTE
    WHERE ID < 4000
)   

SELECT
    SUBSTRING(@Agent, t.ID, CHARINDEX(@Delimiter, @Agent + @Delimiter, t.ID) - t.ID) AS Agent
FROM CTE t
WHERE t.ID <= DATALENGTH(@Agent)+1
    AND SUBSTRING(@Delimiter + @Agent, t.ID, 1) = @Delimiter
OPTION (MAXRECURSION 4000)

More information can be found here: http://www.sqlservercentral.com/articles/Tally+Table/72993/



来源:https://stackoverflow.com/questions/45991269/split-string-via-select-statement

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!