1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

mysql query não exacta

Discussão em 'Web Development' iniciada por LightningXpto, 18 de Fevereiro de 2009. (Respostas: 4; Visualizações: 633)

  1. LightningXpto

    LightningXpto Power Member

    Boas, estou farto de procurar e não encontro como se faz para fazer um query à base de dados de forma não exacta, exemplo:

    Pesquisar por: Teste


    e na base de dados existe um registo com o nome "TesteFinal", se eu fizer:

    PHP:
    $var1 'Teste';

    $sql_rel "SELECT * FROM tabelateste WHERE testefield = '$var1'" ;
    ele obviamente que não me vai apresentar nada, por isso é k eu preciso de uma maneira que ele faca uma query que contenha um determinado texto, mas que não seja a totalidade do mesmo.

    Obrigado.
     
  2. Ignoto_Deo

    Ignoto_Deo Power Member

    Código:
     select * from tabela where coluna like '% texto a pesquisar%'
    se na clausula where, no "texto a pesquisar" a % estiver no principio, significa que o que é retornado acaba com o texpo a pesquisar, se a % tiver no fim, o valor retornado, começa com o texto a pesquisar, se a % tiver no principio e no fim, retorna tudo o que tiver o "texto a pesquisar" independentemente da posição


    no teu caso vai ser
    Código:
    
    [COLOR=#000000][COLOR=#0000BB]$var1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'Teste'[/COLOR][COLOR=#007700];
    
    [/COLOR][COLOR=#0000BB]$sql_rel [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"SELECT * FROM tabelateste WHERE testefield like '%$var1%'" [/COLOR][COLOR=#007700]; [/COLOR][/COLOR]
     
  3. Corpsegrinder

    Corpsegrinder Banido

    para fazeres procuras parciais de texto usa o like em vez do =

    e quando não souberes onde poderá estar o texto que procuras, podes usar o % para indicar que poderá ter coisas pelo meio.

    assim, podes experimentar

    Código:
    select * from tabela_teste where campo like '%teste%' 
    isto vai-te encontrar palavras que possam ou não começar por teste, possam ou nao terminar em teste ou que pelo meio contenham a palavra teste.

    Para uma melhor exactidao na procura, costumo fazer

    Código:
    select * from tabela_teste where upper(campo) like upper('%teste%')
    mas tudo depende da finalidade.

    Para entenderes melhor aquilo do %, procura na net por expressoes regulares.
     
  4. LightningXpto

    LightningXpto Power Member

    Simplesmente espectacular!! Muito obrigado!!
     
  5. mad16v

    mad16v Power Member

Partilhar esta Página