TSQL String modify

前端 未结 3 1418
陌清茗
陌清茗 2020-12-07 06:17

I have a problem with string. I have a variable @Rights which looks like \'ASD,ZXC,QWE,IOP,JKL\' What I need to do is use this string in

SELECT * FROM dbo.Ex         


        
3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-07 06:53

    you can create a split function

    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
    )
    GO
    

    and after you can convert the string in a temp table

    DECLARE @Rights NVARCHAR(128)
    SET @Rights = 'ASD,ZXC,QWE,IOP,JKL'
    SELECT *
    INTO #Temp
    FROM dbo.Split(@Rights , ',')
    

    and after you can use it in your query like this

    SELECT * FROM dbo.Example
    WHERE Rights IN (SELECT Data FROM #Temp)
    

提交回复
热议问题