• Using one of Jeff Moden's splitter functions

    DECLARE @pString VARCHAR(MAX) = 'BUILTIN\ADMINISTRATORS: [System Admin]YES;[Security Admin];[Server Admin];[setup Admin];[Process Admin];[Disk Admin]YES;[Database Creator];'

    DECLARE @pDELIMITER CHAR(1) = ';'

    ;WITH SPLITS AS (

    SELECT ItemNumber = ROW_NUMBER() OVER (ORDER BY t.N),

    Item = SUBSTRING(@pString, t.N, CHARINDEX(@pDelimiter, @pString + @pDelimiter, t.N) - t.N)

    FROM dbo.Tally as t

    WHERE t.N <= DATALENGTH(@pString)+1 --DATATLENGTH allows for trailing space delimiters

    AND SUBSTRING(@pDelimiter + @pString, t.N, 1) = @pDelimiter

    )

    SELECT Item

    FROM SPLITS

    WHERE ITEM Like '%YES'

    ORDER BY ItemNumber

    Then you just concatenate the resulting items with a delimiter, using STUFF, as you were originally experimenting with?