mmmm mira yo tengo la siguiente funcion:
Código SQL:
Ver originalCREATE FUNCTION SplitN(@campo VARCHAR(150), @clave CHAR(1))
RETURNS VARCHAR(8000)
BEGIN
DECLARE @indice INT
DECLARE @indice2 INT
DECLARE @resultado VARCHAR(8000)
DECLARE @tmp VARCHAR(200)
SELECT @indice = 1
SET @resultado = ''
IF @campo IS NULL RETURN @resultado
WHILE @indice !=0
BEGIN
SELECT @indice = CHARINDEX(@clave,@campo)
SELECT @indice2 = CHARINDEX(@clave,@campo,@indice+1)
IF @indice2=0
SELECT @indice2 = len(@campo)
IF @indice != 0
BEGIN
SELECT @tmp = SUBSTRING(@campo,@indice,@indice2)
SELECT @tmp = REPLACE(@campo,@tmp,'')
SELECT @tmp = SUBSTRING(@campo,1,CHARINDEX(@clave,@campo) -1)
END
ELSE
SELECT @tmp = @campo
SET @resultado = @resultado + @tmp
SELECT @campo = SUBSTRING(@campo,@indice2+1,len(@campo))
IF LEN(@campo) = 0 BREAK
END
RETURN @resultado
END
GO
ok ?
bueno, si hago lo siguiente:
Código SQL:
Ver originalDROP TABLE #tabla
GO
CREATE TABLE #tabla
(
Participantes VARCHAR(50)
)
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre1,#45#Nombre2')
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre3,#45#Nombre4')
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre5,#45#Nombre6')
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre7,#45#Nombre8')
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre9')
INSERT INTO #tabla (Participantes) VALUES('#123#Nombre10,#45#Nombre11,#45#Nombre12')
INSERT INTO #tabla (Participantes) VALUES('Nombre13')
DECLARE @str VARCHAR(8000)
SET @str = ' select dbo.SplitN( PArticipantes, ''#'')+'','' as [Participantes] from #tabla '
DECLARE @str2 VARCHAR(8000)
SET @str2 = ' SELECT substring(Participantes,1, charindex('','',Participantes)) as [Participantes] FROM ('+ @str +')A union '
SET @str2 = @str2 +' SELECT substring(Participantes, charindex('','',Participantes)+1,len(Participantes)) as [Participantes] FROM ('+ @str +')A'
DECLARE @str3 VARCHAR(8000)
SET @str3 = ' SELECT substring(Participantes,1, charindex('','',Participantes)) as [Participantes] FROM ('+ @str2 +')A union '
SET @str3 = @str3 +' SELECT substring(Participantes, charindex('','',Participantes)+1,len(Participantes)) FROM ('+ @str2 +')A'
DECLARE @str4 VARCHAR(8000)
SET @str4 = ' SELECT substring(Participantes,1, charindex('','',Participantes)) as [Participantes] FROM ('+ @str3 +')A union '
SET @str4 = @str4 +' SELECT substring(Participantes, charindex('','',Participantes)+1,len(Participantes)) as [Participantes] FROM ('+ @str3 +')A'
EXEC('Select replace(Participantes,'','','''') From ('+ @str4+')B where Participantes<>''''')
Me da los resultados
Código Resultado:
Ver originalNombre1
Nombre10
Nombre11
Nombre12
Nombre13
Nombre2
Nombre3
Nombre4
Nombre5
Nombre6
Nombre7
Nombre8
Nombre9
Checala y me dices que onda, si te sirve o cualquier duda.
No es la mejor forma tal ves, pero es lo primero que se me vino a la mente.