none
Banco de Dados - Programação - Funções - Funções do Sistema - Funções de Cadeia de Caracteres - Replace RRS feed

  • Pergunta

  • Pessoal, 

    Preciso utilizar essa função para excluir espaço em branco oriundo de um campo input que está gerando o %20 entre as palavras quando passadas em forma de url para o navegador.

    Como faço também pra editar essa função, é preciso atribuir permissão pra editá-la, como faço isso?

    Grato.


    • Editado Pedro Júnior1 quarta-feira, 26 de dezembro de 2012 21:23 correção
    quarta-feira, 26 de dezembro de 2012 21:21

Respostas

  • Pedro, os registros que estão armazenados até agora poderão ser alterados através de um simples update. Isto significa que as novas entradas de registros (inserções) poderão entrar com este problema.

    Recomendo que primeiramente verifique qual o sistema que realiza este insert na tabela TBMateriaisCLT. Após identificado, vc pode alterar a rotina, tratando este problema na aplicação, de modo a realizar a inserção dos dados sem os epaços em branco.

    Se não existir esta possibilidade, vc pode criar uma rotina no SQL agent, realizando um update nesta coluna. Desta forma vc poderia agendar uma periodiciodade para rodar esta atualização. o SQL agent irá executar a atualização automaticamente, sem vc precisar rodar no SSMS.

    O comando ficaria assim.

    update TBMateriasCLT set
    titulo = Replace(Titulo, ' ','-')
    where CHARINDEX(' ', Titulo) >0
    

    Antes de executar este comando, faça um backup da tabela TBMateriaisCLT e faça as devidas validações.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Marcado como Resposta Pedro Júnior1 sexta-feira, 28 de dezembro de 2012 12:11
    quinta-feira, 27 de dezembro de 2012 15:21

Todas as Respostas

  • Pedro, bom dia

    Para entender melhor sua dúvida, vc deseja criar uma função que elimine espaços em branco numa cadeia de caracteres? Ou deseja editar uma função já criada no seu banco ?

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 10:39
  • Pedro,

    Veja se o link abaixo pode te ajudar (RTRIM)

    http://msdn.microsoft.com/pt-br/library/ms178660.aspx


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 27 de dezembro de 2012 12:04
  • Prezado Eduardo,

    Assisti a um vídeo no youtube dando a dica de antes de criar uma função ver se tem alguma instalada que efetive o que deseja.

    E é isso que desejo, no SQL Server 2012 tem essa função Replace, e desejo editá-la ou usá-la, preciso de permissão para entrar com essas atividades na função?

    Grato.


    • Editado Pedro Júnior1 quinta-feira, 27 de dezembro de 2012 13:05 correção
    quinta-feira, 27 de dezembro de 2012 12:51
  • Pedro,

    Talvez editar a função REPLACE não seja uma boa ideia, você pode criar uma outra função aproveitando ela e preservar a original, para isso clique com o botão direito nela e gere o Script para a janela de nova consulta e faça as alterações que achar necessário depois crie a nova função.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 27 de dezembro de 2012 13:01
  • Prezado Marcos

    Meio passo dado.

    Não especifiquei melhor dúvida. Lá vai.

    Tenho uma tabela com três colunas: Titulo, PrimeiroParagrafo, SegundoParagrafo. A coluna do título armazena dados de um campo input que fiz gerar um 'a href' de exibição. Quando clicado no título link (a href), o navegador preenche espaços entre as palavras com o '%20'. Quero preencher o espaço em branco com um hífen (-).

    Como resolver isso dentro do SQL Server 2012 para que a url fique amigável. 

    Fiz um teste em Nova Consulta dessa forma:

    SELECT REPLACE('O DIREITO',' ','-');

    GO

    RESULTADOS

    O-DIREITO

    Com essa forma será que resolver o problema.

    Mas quero substituir todo o espaço da coluna título. 

    Grato.

    • Editado Pedro Júnior1 quinta-feira, 27 de dezembro de 2012 13:13 correção
    quinta-feira, 27 de dezembro de 2012 13:04
  • Pedro tenta utilizar assim:

    REPLACE ( SeuCampo , '%20' , '-' )


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 27 de dezembro de 2012 13:16
  • Prezado Marco,

    Estamos quase-lá, certo?

    Preciso que explicite melhor para realizar melhor a resolução.

    1 - pretendo deixar essa coluna substituindo todos os espaços em branco para que o navegador não interprete como %20

    2 - preciso criar essa função ou gerar scripts.

    3 - após criar esses scripts, preciso realizar outro procedimento, salvar, implantar, executar, algo do tipo, ou basta salvá-la e pronto, e a partir daí o SQL entenderá o que quero?

    Grato.


    • Editado Pedro Júnior1 quinta-feira, 27 de dezembro de 2012 13:44 correção
    quinta-feira, 27 de dezembro de 2012 13:39
  • Segue o exemplo para criação da função.

    CREATE FUNCTION [dbo].[fn_tira_espacos_em_branco](@Texto varchar(8000))
    returns varchar(8000)  
    AS  
    BEGIN
             declare @texto2 varchar(300)  
     
             select @texto2 = replace(@Texto,' ','')   
      
             return (UPPER(@texto2))  
    END
    
    

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 14:04
  • Pedro, se deseja somente tirar os espaços em branco, use a função replace. A utilização de funções customizadas pode gerar um problema de perfomance caso a sua utilização seja recorrente.

    select replace(campo, ' ','') as campo_sem_espacos from tabela

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 14:07
  • Prezado Eduardo,

    E pra uma específica coluna?

    quinta-feira, 27 de dezembro de 2012 14:14
  • Pedro,

    É só substituir onde tem "campo" pelo nome da coluna.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 27 de dezembro de 2012 14:19
  • Pedro, é isto mesmo. Substitua "campo" para o nome da coluna que deseja excluir os espaços em branco.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 14:37
  • Prezados,

    Se não for demais pedir, queria o código pronto, pois vária explicações diferentes estão embaraçando a ideia. Segui os dados:

    Nome do banco de dados: MateriasCLT

    Nome da Tabela: TBMateriasCLT

    Nome da Coluna: Titulo

    Grato.


    • Editado Pedro Júnior1 quinta-feira, 27 de dezembro de 2012 14:42 correção
    quinta-feira, 27 de dezembro de 2012 14:41
  • Pedro, 

    As funções rtrim+ltrim não lhe ajuda?

    select rtrim(ltrim(titulo)) from MateriasCLT..TBMateriasCLT



    []'s


    quinta-feira, 27 de dezembro de 2012 14:52
  • Prezado Fernando,

    Não seria assim:

    select rtrim(ltrim(Titulo)) as MateriasCLT from TBMateriasCLT

    Ok para achar a coluna, porém não está substituindo o espaço.

    Grato

    quinta-feira, 27 de dezembro de 2012 15:00
  • Tente desta forma:

    elect replace(Titulo,' ','') as MateriasCLT from TBMateriasCLT

    Abs.

    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 15:06
  • select replace(Titulo,' ','') as MateriasCLT from TBMateriasCLT


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    quinta-feira, 27 de dezembro de 2012 15:07
  • Prezado Eduardo,

    Valew, lembro que você repetiu o código, mas acho que deixou de ler a dúvida inteira,

    É substituir o espaço com hífen

    E agora deu ok, código assim:

    Select Replace(Titulo, ' ','-') As Titulo From TBMateriasCLT

    Pronto! Mas e agora? Basta salvar isso que o SQL entenderá o que quero com o campo da coluna Título?

    Grato a todos.


    • Editado Pedro Júnior1 quinta-feira, 27 de dezembro de 2012 15:13 correção
    quinta-feira, 27 de dezembro de 2012 15:11
  • Pedro, os registros que estão armazenados até agora poderão ser alterados através de um simples update. Isto significa que as novas entradas de registros (inserções) poderão entrar com este problema.

    Recomendo que primeiramente verifique qual o sistema que realiza este insert na tabela TBMateriaisCLT. Após identificado, vc pode alterar a rotina, tratando este problema na aplicação, de modo a realizar a inserção dos dados sem os epaços em branco.

    Se não existir esta possibilidade, vc pode criar uma rotina no SQL agent, realizando um update nesta coluna. Desta forma vc poderia agendar uma periodiciodade para rodar esta atualização. o SQL agent irá executar a atualização automaticamente, sem vc precisar rodar no SSMS.

    O comando ficaria assim.

    update TBMateriasCLT set
    titulo = Replace(Titulo, ' ','-')
    where CHARINDEX(' ', Titulo) >0
    

    Antes de executar este comando, faça um backup da tabela TBMateriaisCLT e faça as devidas validações.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Marcado como Resposta Pedro Júnior1 sexta-feira, 28 de dezembro de 2012 12:11
    quinta-feira, 27 de dezembro de 2012 15:21