Usuário com melhor resposta
Percorrer um campo até um caracter especificado

Pergunta
-
Bom Dia!
Estou precisando de uma grande ajuda!
Tenho uma coluna na base que retorna usuarios associados a movimentos.
Exemplo: ;andre;eduardo;antonio
Estou precisando fazer uma consulta que retorne somente o andre, o eduardo e antonio separadamente.
Muito Obrigado pela atenção de todos!
Respostas
-
vc. pode usar essa funcao
CREATE Function Ufn_TableArray2 (@VarArray Varchar(8000))
Returns @TableArray Table (Idx Int Identity(1,1), Item varchar(50)) AS
BEGIN
Declare @Indice AS int
Declare @IndiceArray AS int
Declare @VarAcum AS nvarchar(30)
SET @VarArray = @VarArray + ','
SET @VarAcum = ''
SET @Indice = 1
SET @IndiceArray = 0
WHILE @Indice <= Len(@VarArray)
BEGIN
IF Substring(@VarArray,@Indice,1) = ','
BEGIN
INSERT INTO @TableArray (Item) VALUES (@VarAcum)
SET @VarAcum = ''
END
ELSE
BEGIN
SET @VarAcum = rtrim(Convert(char(30),@VarAcum)) + rtrim(convert(char(30),Substring(@VarArray,@Indice,1)))
END
SET @Indice = @Indice+1
END
RETURN
ENDpasse o select assim
Select dbo.Ufn_TableArray2(campo) where chave = 1 entao and item = 'joao'
Abs;
-
muito bom seu exemplo Marcelo, apenas para facilitar sugiro que seja incluído um segundo parâmetro, assim fica fácil alterar o caracter de pesquisa. Segue abaixo as alterações.
CREATE Function Ufn_TableArray2 (@VarArray Varchar(8000),@Caracter char(1))
Returns @TableArray Table (Idx Int Identity(1,1), Item varchar(50)) AS
BEGIN
Declare @Indice AS int
Declare @IndiceArray AS int
Declare @VarAcum AS nvarchar(30)
SET @VarArray = @VarArray + @Caracter
SET @VarAcum = ''
SET @Indice = 1
SET @IndiceArray = 0
WHILE @Indice <= Len(@VarArray)
BEGIN
IF Substring(@VarArray,@Indice,1) = @Caracter
BEGIN
INSERT INTO @TableArray (Item) VALUES (@VarAcum)
SET @VarAcum = ''
END
ELSE
BEGIN
SET @VarAcum = rtrim(Convert(char(30),@VarAcum)) + rtrim(convert(char(30),Substring(@VarArray,@Indice,1)))
END
SET @Indice = @Indice+1
END
RETURN
ENDEspero ter ajudado
Todas as Respostas
-
vc. pode usar essa funcao
CREATE Function Ufn_TableArray2 (@VarArray Varchar(8000))
Returns @TableArray Table (Idx Int Identity(1,1), Item varchar(50)) AS
BEGIN
Declare @Indice AS int
Declare @IndiceArray AS int
Declare @VarAcum AS nvarchar(30)
SET @VarArray = @VarArray + ','
SET @VarAcum = ''
SET @Indice = 1
SET @IndiceArray = 0
WHILE @Indice <= Len(@VarArray)
BEGIN
IF Substring(@VarArray,@Indice,1) = ','
BEGIN
INSERT INTO @TableArray (Item) VALUES (@VarAcum)
SET @VarAcum = ''
END
ELSE
BEGIN
SET @VarAcum = rtrim(Convert(char(30),@VarAcum)) + rtrim(convert(char(30),Substring(@VarArray,@Indice,1)))
END
SET @Indice = @Indice+1
END
RETURN
ENDpasse o select assim
Select dbo.Ufn_TableArray2(campo) where chave = 1 entao and item = 'joao'
Abs;
-
muito bom seu exemplo Marcelo, apenas para facilitar sugiro que seja incluído um segundo parâmetro, assim fica fácil alterar o caracter de pesquisa. Segue abaixo as alterações.
CREATE Function Ufn_TableArray2 (@VarArray Varchar(8000),@Caracter char(1))
Returns @TableArray Table (Idx Int Identity(1,1), Item varchar(50)) AS
BEGIN
Declare @Indice AS int
Declare @IndiceArray AS int
Declare @VarAcum AS nvarchar(30)
SET @VarArray = @VarArray + @Caracter
SET @VarAcum = ''
SET @Indice = 1
SET @IndiceArray = 0
WHILE @Indice <= Len(@VarArray)
BEGIN
IF Substring(@VarArray,@Indice,1) = @Caracter
BEGIN
INSERT INTO @TableArray (Item) VALUES (@VarAcum)
SET @VarAcum = ''
END
ELSE
BEGIN
SET @VarAcum = rtrim(Convert(char(30),@VarAcum)) + rtrim(convert(char(30),Substring(@VarArray,@Indice,1)))
END
SET @Indice = @Indice+1
END
RETURN
ENDEspero ter ajudado
-