Usuário com melhor resposta
Verificação de Caracteres

Pergunta
-
Boa tarde,
Pessoal estou com um dúvida sobre um caso, veja se podem ajudar-me, é o seguinte.
Possuo uma base onde tenho projetos com várias tarefas, as tarefas possuem níveis, existe uma tabela com dados dos projetos e outra com dados das tarefas até ai tudo bem trazer os dados das duas coisa mas preciso mostrar mas ou menos com a estrutura:
NOME PROJETO - TAREFA NIVEL 01- TAREFA NIVEL 02 - TAREFA NIVEL 03 e por ai vai
Tem um campo na tabela de tarefas que armazena o nivel da da seguinte forma
pIdProjeto.tIdTarefa01.tIdTarefa02.tIdTarefa03.tIdTarefa04
é tipo a estrutura hierárquica... Como percorrer este campo e identificar os nome pelos códigos?
Não sei se fui claro o caso é complicado
Respostas
-
O que voce tem que fazer é um split do valor pIdProjeto.tIdTarefa01.tIdTarefa02.tIdTarefa03.tIdTarefa04 usando "ponto" como caractere delimitador.
se voce usa o Sql server 2016, a funçao é STRING_SPLIT senao voce vai ter que adicionar uma user function:
CREATE FUNCTION SplitString ( @Input NVARCHAR(MAX), @Character CHAR(1) ) RETURNS @Output TABLE ( Item NVARCHAR(1000) ) AS BEGIN DECLARE @StartIndex INT, @EndIndex INT SET @StartIndex = 1 IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character BEGIN SET @Input = @Input + @Character END WHILE CHARINDEX(@Character, @Input) > 0 BEGIN SET @EndIndex = CHARINDEX(@Character, @Input) INSERT INTO @Output(Item) SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) END RETURN END GO
agora é só fazer um split no valor pIdProjeto.tIdTarefa01.tIdTarefa02.tIdTarefa03.tIdTarefa04 e usar a tabela resultante para fazer um join com a tabela de nivel.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Sugerido como Resposta Jean Carlos Galhardi quarta-feira, 13 de junho de 2018 11:07
Todas as Respostas
-
O que voce tem que fazer é um split do valor pIdProjeto.tIdTarefa01.tIdTarefa02.tIdTarefa03.tIdTarefa04 usando "ponto" como caractere delimitador.
se voce usa o Sql server 2016, a funçao é STRING_SPLIT senao voce vai ter que adicionar uma user function:
CREATE FUNCTION SplitString ( @Input NVARCHAR(MAX), @Character CHAR(1) ) RETURNS @Output TABLE ( Item NVARCHAR(1000) ) AS BEGIN DECLARE @StartIndex INT, @EndIndex INT SET @StartIndex = 1 IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character BEGIN SET @Input = @Input + @Character END WHILE CHARINDEX(@Character, @Input) > 0 BEGIN SET @EndIndex = CHARINDEX(@Character, @Input) INSERT INTO @Output(Item) SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) END RETURN END GO
agora é só fazer um split no valor pIdProjeto.tIdTarefa01.tIdTarefa02.tIdTarefa03.tIdTarefa04 e usar a tabela resultante para fazer um join com a tabela de nivel.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Sugerido como Resposta Jean Carlos Galhardi quarta-feira, 13 de junho de 2018 11:07
-