¿Buscar palabra completa en SQL?

Publicado en 'Programación' por chico_p, 6 Mar 2019.





  1. chico_p

    chico_p Miembro maestro

    Registro:
    13 Ago 2009
    Mensajes:
    481
    Likes:
    13
    Temas:
    115




    Hola, quisiera consulta como realizar una consulta en SQL para buscar una palabra completa, pero lo que quiero exactamente es esto:

    Ejemplo, si busco la palabra "CASA"

    1. Si en la columna esta la palabra "CASANOVA" no la considere
    2. Que si esta la oración "la CASA es grande", entonces que si lo considere
     


  2. Done

    Done Miembro maestro

    Registro:
    16 Nov 2011
    Mensajes:
    550
    Likes:
    52
    Temas:
    155
    No seria asi?

    SELECT * FROM tabla WHERE palabra = 'CASA'

    En todo caso seria

    SELECT * FROM tabla WHERE palabra LIKE '% CASA %'

    Con espacios al inicio y despues de casa
     
    A chico_p le gustó este mensaje.
  3. saiverds

    saiverds Miembro maestro

    Registro:
    20 Dic 2016
    Mensajes:
    718
    Likes:
    124
    Temas:
    13
    Select [columnas] from TABLA
    Where campo LIKE '%CASA'

    algo así quieres supongo sería con Like averigua más sobre ese operador y en qué Gestor de Base de Datos trabajas Oracle , SQL SERVER , MySql ....
    https://www.w3schools.com/sql/sql_like.asp
    Revise

    Para mejorar tu pregunta específica la tabla los campos a consultar y de que campos consultas
     
    A chico_p le gustó este mensaje.
  4. chico_p

    chico_p Miembro maestro

    Registro:
    13 Ago 2009
    Mensajes:
    481
    Likes:
    13
    Temas:
    115
    Y si quiero que tambien considere las palabras "-CASA-" o ".CASA.".

    Es decir que descarte las palabras compuestas como "CASANOVA" o "ME VOY DE CASAMIENTO" , pero que si considere solo la palabra "CASA" o la oracion "LA CASA ES GRANDE" o "ME VOY A LA CASA" o con simbolos "(CASA)" , "[CASA]" , "/CASA/" que tambien los considere en la busqueda.
     
  5. Done

    Done Miembro maestro

    Registro:
    16 Nov 2011
    Mensajes:
    550
    Likes:
    52
    Temas:
    155
    Ahí creo que tendrías que usar Expresiones Regulares, pero la verdad eso no manyo mucho
     
  6. DiegoTM

    DiegoTM Miembro maestro

    Registro:
    12 Set 2015
    Mensajes:
    798
    Likes:
    171
    Temas:
    23
    Seria algo asi
    select * from tutabla where (' '+tucolumna+' ') like '% tufiltro %'

    Con símbolos se pone mas tedioso.
     
  7. gnox

    gnox Miembro de bronce

    Registro:
    3 Ene 2013
    Mensajes:
    2,348
    Likes:
    946
    Temas:
    82
    No mencionas que motor de base de datos, para todo ese tipo de combinaciones el LIKE "%xxxx%" no basta, tienes que usar regular expressions, para todas tus condiciones seria solo :
    Código:
    (?i)\bcasa\b
    
    Si el motor de base de datos tiene manejo de regular expressions en sus sentencias sql puedes hacer uso del regex que puse ..
    Código:
    ... LIKE '(?i)\bcasa\b'
    
    https://regex101.com/r/ezKLQf/1
     
  8. Done

    Done Miembro maestro

    Registro:
    16 Nov 2011
    Mensajes:
    550
    Likes:
    52
    Temas:
    155
    Que base de datos es?
     
  9. gnox

    gnox Miembro de bronce

    Registro:
    3 Ene 2013
    Mensajes:
    2,348
    Likes:
    946
    Temas:
    82
    Menciono en forma condicional "Si el motor de base de datos..." no especifico ninguno ya que el creador del tema no menciono cual usa. La forma especifica de como lo maneja cada motor lo puede buscar solo como "<motor que usa> + regular expression" algunos lo manejan otros no ..
     
  10. Done

    Done Miembro maestro

    Registro:
    16 Nov 2011
    Mensajes:
    550
    Likes:
    52
    Temas:
    155
    Lo que preguntaba es el comando RegExp que pusiste para que motor de base de datos es? y como seria para MySQL.

    Gracias