Ir ao conteúdo

Select para uma quantidade específica de caracteres antes/depois de uma palavra


Visitante: sedexan

Posts recomendados

Visitante: sedexan
 
Postado

Boa tarde, galera!

Quero fazer uma SELECT que retorne apenas os 100 caracteres anteriores e os 100 caracteres posteriores à uma determinada palavra em um campo de texto.

Por exemplo, se o usuário digita "hardware", a select retornará:

******100 caracteres*****

+

"hardware"

+

*******100 caracteres******

(como um sistema de busca)

Qual seria a função a ser usada no SQL? Já tentei as funções LEFT e RIGHT, porém elas só pegam o início e o final do campo, e não solucionou o problema.

Obrigado,

Helder

Visitante: sedexan
 
Postado
Olá, com estas funções é para você conseguir

INSTR(str,substr)

SUBSTRING(str,pos,tam)

Pesquise em http://dev.mysql.com/doc/refman/4.1/pt/string-functions.html para ter mais detalhes, se não conseguir avise que ajudamos.

Tente assim

select SUBSTR( campo_da_table , instr( campo_da_table , "hardware" ) - 100 , 200 ) FROM TABLE

------------

Valeu, Erciley...

No meu caso substitui a palavra por uma variável que será a digitada pelo usuário e ficou assim:

SELECT id, SUBSTR(campo, instr(campo, '$valor') - 20, 100) FROM table

Aproveitando o ensejo, pergunto:

Teria como destacar essa "palavra" (a variável $valor) para ela aparecer no texto em negrito ?

Desde já... muito obrigado!

Postado

Realmente eu desconheço isso, e não acredito que isso exista. (alguém me corrija se estiver errado)

Isso tem como você fazer no seu sistema, dependendo da linguagem de programação, de diversos modos, mas não direto no retorno da consulta feita no BD.

Uma gambiarra que você poderia fazer no próprio sql seria ^^


SELECT id, REPLACE ( SUBSTR(campo, instr(campo, '$valor') - 20, 100) , '$valor' , '***$valor***' ) FROM table

desse jeito, todo lugar que estiver o trecho procurado, será retornado o trecho envolto por ***, bem tosco isso, mas serve para você visualizar algo que queira apenas para consulta. ^^

Visitante: sedexan
 
Postado
Realmente eu desconheço isso, e não acredito que isso exista. (alguém me corrija se estiver errado)

Isso tem como você fazer no seu sistema, dependendo da linguagem de programação, de diversos modos, mas não direto no retorno da consulta feita no BD.

Uma gambiarra que você poderia fazer no próprio sql seria ^^


SELECT id, REPLACE ( SUBSTR(campo, instr(campo, '$valor') - 20, 100) , '$valor' , '***$valor***' ) FROM table

desse jeito, todo lugar que estiver o trecho procurado, será retornado o trecho envolto por ***, bem tosco isso, mas serve para você visualizar algo que queira apenas para consulta. ^^

----------------------

Beleza !!!

Com mais essa sua dica... alcancei o objetivo(coloquei negrito e itálico), assim:

SELECT id, REPLACE (SUBSTR(campo_tabela, instr(campo_tabela, '$valor') - 20, 100) , '$valor' , '<b><i> $valor </i></b>' ) FROM tabela

Obrigado!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...