none
Como simplificar (abreviar) grandes textos?

    Question

  • Bom dia,

    Gostaria de ajuda na montagem de um update em um campo de NomeLivro, que limitasse a quantidade de caracteres, porém não cortando o final!
    Quero determinar que apareçam apenas 50 caracteres, e se ultrapassar disso, exemplo 100, quero mostrar ... (3 pontos) no meio da palavra ou em algum caracter próximo ao meio se não existir "meio exato"

    exemplo:

    "O nome do livro é muito grande para ser apresentado aqui...Por isso preciso do tal UPDATE"

    Obrigado!


    DBA Vini
    Tuesday, August 09, 2011 12:16 PM

Answers

  • Vinicius,

    Como assim "faz de 1 a 1"? Se vc fizer

    UPDATE TABELA SET CAMPO =  left(ATRIBUTO,25)+'...'+right(ATRIBUTO,25)

    ele vai atualizar toda a sua tabela de uma só vez...

    att.
    Rafael MElo

    Tuesday, August 09, 2011 12:52 PM

All replies

  • pensei em começar utilizando o seguinte

    SELECT TOP 100 SubString(Nm_Titulo,1,25) + '...' +

    só não sei como contar a volta do último caracter até os 25 caracteres + os 3 pontos, que seri ao 28

    obrigado desde já!


    DBA Vini
    Tuesday, August 09, 2011 12:28 PM
  • Bom dia Vinicius,

    Voce poderá usar o LEFT e o RIGHT para atender sua questão. Ex:

    declare @texto varchar(100)
    
    set @texto = 'Esse é um teste com strings longas e concatenadas.'
    select @texto
    select left(@texto,10)+'...'+right(@texto,10)
    

    att.
    Rafael Melo

    Tuesday, August 09, 2011 12:38 PM
  • Boa, funciona legal, só que eu queria pode utilizar isso em cerca de 17 mil títulos, via UPDATE

    Desta maneira só faz de 1 em 1

    Tem como fazer o SELECT com essas funções?
    Não gostaria de usar WHILE para fazer UPDATE, tornaria o processo bem lento.

    Muito obrigado já diante mão pelas dicas!


    DBA Vini
    Tuesday, August 09, 2011 12:44 PM
  • E se eu utilizar desta maneira, o texto quando vem de LEFT, também pega caracteres que estão no RIGHT:

    Vai começar a brincadeira - Natureza e Sociedade 3
    Vai começar a brincadeira - Na...deira - Natureza e Sociedade 3

    Gostaria de um limitador para vim logo após os 3 pontos


    DBA Vini
    Tuesday, August 09, 2011 12:48 PM
  • Vinicius,

    Como assim "faz de 1 a 1"? Se vc fizer

    UPDATE TABELA SET CAMPO =  left(ATRIBUTO,25)+'...'+right(ATRIBUTO,25)

    ele vai atualizar toda a sua tabela de uma só vez...

    att.
    Rafael MElo

    Tuesday, August 09, 2011 12:52 PM
  • Quanto ao UPDATE, tem razão, é que rodei o declare setado para um registro em vários e não percebi o erro.

    Mas a questão é que não há tratamento na seleção. Digo, os números de caracteres não são fixos, eles variam. Preciso pegar do último para trás até chegar nos 3 pontos do meio.

    Do inicio até os 3 pontos está ótimo. Posso utilizar o LEFT e depois + '...'
    O Right deve contar do último, e não de uma posição fixa como 25 (se não vai "encavalar", me explico???)

    Obrigado meu caro!


    DBA Vini
    Tuesday, August 09, 2011 1:06 PM
  • Vinicius,

    Como assim "faz de 1 a 1"? Se vc fizer

    UPDATE TABELA SET CAMPO =  left(ATRIBUTO,25)+'...'+right(ATRIBUTO,25)

    ele vai atualizar toda a sua tabela de uma só vez...

    att.
    Rafael MElo


    Colocando no meu WHERE para pedar DATALENGTH > 50, já trato esta questão de "atropelar" a contagem entre LEFT e RIGHT

    MUITO OBRIGADO!!!


    DBA Vini
    Tuesday, August 09, 2011 1:10 PM
  • Vini,

    Obrigado pelo retorno!

    att.
    Rafael Melo

    Tuesday, August 09, 2011 1:29 PM