3

我将一个字符串传递到一个存储过程中,以便在使用动态 sql 的 select 语句中使用:

@groups as nvarchar(1000) = 'group1,group10,group8'

我可能只传入一串数字,例如'1,2,3,4'

我想拆分这些值,然后将它们连接起来,以便它们以下列方式结束:

'rmc.group1,rmc.group10,rmc.group8'
4

3 回答 3

4

Sql 小提琴演示

Select Replace('group1,group10,group8','group','rmc.group')
于 2013-07-30T09:05:56.787 回答
4
declare @groups nvarchar(1000) ='group1,group10,group8'

set @groups = 'rmc.' + replace(@groups, ',', ',rmc.')
select @groups

结果:

rmc.group1,rmc.group10,rmc.group8
于 2013-07-30T09:04:38.037 回答
2

试试这个——

DECLARE @groups nvarchar(1000) = 'group1,group10,group8'

SELECT STUFF((
    SELECT ',rmc.' + t
    FROM (
          SELECT t = t.c.value('.', 'VARCHAR(50)')
          FROM (
               SELECT ID = CAST ('<t>' + REPLACE(@groups, ',', '</t><t>') + '</t>' AS XML)
          ) r 
          CROSS APPLY ID.nodes ('/t') t(c)
    ) t
    FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1,1, '')

输出 -

------------------------------------
rmc.group1,rmc.group10,rmc.group8
于 2013-07-30T09:02:09.453 回答