none
Update Retirando parte do campo RRS feed

  • Pergunta

  • Boa tarde, tudo bem?

    Teria como fazer um UPDATE retirando parte de um campo, um exemplo bobo mas so para conseguir explicar. Quero tirar a primeira palavra, mas o tamanho vai variar em cada linha de dados.

    Joao foi a praia

    Joaquim foi ao mercado

    No Update quero tirar o joao e o joaquim, ficando:

    foi a praia

    foi ao mercado

    Tem como?

    Obrigado!

    quarta-feira, 14 de setembro de 2016 18:06

Respostas

  • Olá Davi,

    Você tem que encontrar um padrão nessas sentenças para conseguir fazer o que deseja. Por exemplo se for sempre uma palavra (podendo ser um nome) seguido de um espaço e depois tendo o restante da frase, você poderia fazer assim:

    DECLARE @teste VARCHAR(MAX) = 'Joaquim foi ao mercado'
    
    SELECT SUBSTRING(@teste, CHARINDEX(' ', @teste)+1, LEN(@teste)-CHARINDEX(' ', @teste))


    Aí claro, podes adaptar a utilização da substring dentro de um select se for o caso, por exemplo:

    SELECT SUBSTRING(Tabela.Observacao, CHARINDEX(' ', Tabela.Observacao)+1, LEN(Tabela.Observacao)-CHARINDEX(' ', Tabela.Observacao))
    FROM Tabela
    WHERE .....

    Espero ter ajudado!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco




    • Editado André SeccoMVP quarta-feira, 14 de setembro de 2016 18:24
    • Marcado como Resposta DaviSaba quarta-feira, 14 de setembro de 2016 19:07
    quarta-feira, 14 de setembro de 2016 18:19

Todas as Respostas

  • Olá Davi,

    Você tem que encontrar um padrão nessas sentenças para conseguir fazer o que deseja. Por exemplo se for sempre uma palavra (podendo ser um nome) seguido de um espaço e depois tendo o restante da frase, você poderia fazer assim:

    DECLARE @teste VARCHAR(MAX) = 'Joaquim foi ao mercado'
    
    SELECT SUBSTRING(@teste, CHARINDEX(' ', @teste)+1, LEN(@teste)-CHARINDEX(' ', @teste))


    Aí claro, podes adaptar a utilização da substring dentro de um select se for o caso, por exemplo:

    SELECT SUBSTRING(Tabela.Observacao, CHARINDEX(' ', Tabela.Observacao)+1, LEN(Tabela.Observacao)-CHARINDEX(' ', Tabela.Observacao))
    FROM Tabela
    WHERE .....

    Espero ter ajudado!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco




    • Editado André SeccoMVP quarta-feira, 14 de setembro de 2016 18:24
    • Marcado como Resposta DaviSaba quarta-feira, 14 de setembro de 2016 19:07
    quarta-feira, 14 de setembro de 2016 18:19
  • Valeu, ajudou sim
    quarta-feira, 14 de setembro de 2016 19:08
  • Deleted
    quarta-feira, 14 de setembro de 2016 19:11
  • Olá Davi,

    A forma mais objetiva de se fazer isso que pretende é usando STUFF, copie e cole o código abaixo e veja se o resultado é o que procura. Se for, não esquece de marcar.

    DECLARE @T TABLE ( Frase Varchar(100) );
    INSERT INTO @T
    VALUES ('Joao foi a praia'),
           ('Joaquim foi ao mercado'),
        ('Quintana é a minha cidade'),
        ('Analista'),
        ('Programador'),
        ('Database SQL Server');
    UPDATE @T
       SET Frase = STUFF(Frase,1,CHARINDEX(' ',Frase),'');
    SELECT * FROM @T

    • Sugerido como Resposta Zé Bill sábado, 17 de setembro de 2016 00:58
    sábado, 17 de setembro de 2016 00:56