none
buscar Palabras sin importar el orden RRS feed

  • Pregunta

  • Saben como en pues buscar en SQL dada una cadena con varias palabras, buscar las que coincidan de un registro pero sin importar el orden en que se encuentren estas palabras?
    jueves, 19 de junio de 2014 21:05

Respuestas

  • Primero tendrías que dividir la cadena en palabras y luego usar LIKE o Full Text Search.

    Usando LIKE sería así:

    SELECT *
    FROM MiTabla
    WHERE
      MiCampo LIKE '%Palabra1%'
      AND MiCampo LIKE '%Palabra2%'
      AND MiCampo LIKE '%Palabra3%'

    Usando Full Text Search (tendrías que configurarlo primero)

    SELECT *
    FROM MiTabla
    WHERE CONTAINS(MiCampo,'Palabra1 AND Palabra2 AND Palabra3')


    EntityLite: A Lightweight, Database First, Micro ORM



    • Editado Jesús López viernes, 20 de junio de 2014 8:42 x
    • Propuesto como respuesta Uriel Almendra viernes, 20 de junio de 2014 12:25
    • Marcado como respuesta javyjaja viernes, 20 de junio de 2014 13:29
    viernes, 20 de junio de 2014 8:38

Todas las respuestas

  • Creo que tu pregunta no esta bien redactada o al menos yo no comprendo...

    Un ejemplo podría ayudar.


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    jueves, 19 de junio de 2014 21:31
  • Primero tendrías que dividir la cadena en palabras y luego usar LIKE o Full Text Search.

    Usando LIKE sería así:

    SELECT *
    FROM MiTabla
    WHERE
      MiCampo LIKE '%Palabra1%'
      AND MiCampo LIKE '%Palabra2%'
      AND MiCampo LIKE '%Palabra3%'

    Usando Full Text Search (tendrías que configurarlo primero)

    SELECT *
    FROM MiTabla
    WHERE CONTAINS(MiCampo,'Palabra1 AND Palabra2 AND Palabra3')


    EntityLite: A Lightweight, Database First, Micro ORM



    • Editado Jesús López viernes, 20 de junio de 2014 8:42 x
    • Propuesto como respuesta Uriel Almendra viernes, 20 de junio de 2014 12:25
    • Marcado como respuesta javyjaja viernes, 20 de junio de 2014 13:29
    viernes, 20 de junio de 2014 8:38
  • me parece bien la de Full Text Search, porque no se sabe cuantas palabras ponga el usuario, y así puedo mandarle la cadena separada por los AND desde el código de c#.

    Checare...

    viernes, 20 de junio de 2014 14:27
  • Realmente en la aplicación cliente se puede construir perfectamente la instrucción sql y usar Like. Por ejemplo con EntityLite sería así:

    IList<MyEntity> SearchByWords(IEnumerable<string> words)
    {
       using (var ds = new MyDataService())
       {
           var query = ds.MyEntityRepository.Query(Projection.BaseTable);
           foreach(var word in words)
           {
               query.And(MyEntityFields.MyField, OperatorLite.Contains, word);
           }
           return query.ToList()
    
       }
    
    }

    Sólo hay que tener un buen ORM como EntityLite, je je je, :-)

    Ya sé está feo que yo lo diga pero EntityLite es fantástico.


    EntityLite: A Lightweight, Database First, Micro ORM


    viernes, 20 de junio de 2014 17:36