Seleccionar instrucción con múltiples campos 'donde' usando el mismo valor sin duplicar el text

Comenzaré diciendo que no creo que se pueda hacer lo que quiero, pero dicho eso, espero estar equivocado y alguien sabe más que yo. Así que esta es tu oportunidad … Demuéstrame que eres más inteligente que yo 🙂

Quiero hacer una búsqueda en una tabla de SQLite buscando cualquier logging que "sea similar" sin tener que escribir la consulta en forma extensa.

Para aclarar esto, sé cómo sé que puedo escribir la consulta:

select * from Articles where title like '%Bla%' or category like '%Bla%' or post like '%Bla%' 

Esto funciona y no es un gran problema si solo se compara con un par de columnas, pero si tiene que comparar con un montón, su consulta puede ser muy larga y desagradable con rapidez, sin mencionar la posibilidad de errores tipocharts. (es decir: 'Bla%' en lugar de '% Bla%')

Lo que me pregunto es si hay una forma corta de hacer esto.

* El siguiente código no funciona como yo quiero, pero solo muestra el tipo de lo que estoy buscando

 select * from Articles where title or category or post like '%Bla%' 

¿Alguien sabe si hay una manera de especificar que múltiples columnas 'donde' deben usar el mismo valor de búsqueda sin include el mismo valor de búsqueda para cada columna?

¡Gracias por adelantado!

Creo que teniendo en count que está utilizando sqlite debería considerar el uso de Full Text Search. Hará que lo que estás intentando hacer sea más eficiente.

http://www.sqlite.org/cvstrac/wiki?p=FtsUsage

Lo más rápido que se me ocurre es concatenar título, categoría y publicación, y ver si la cadena concatenada coincide con '% Bla%'. Para hacer que esto funcione de manera confiable, utilice un separador como ',' al concatenar (de lo contrario, podría tener el título 'Bl' y la categoría 'a').

No sé cómo se llama el operador de concatenación en SQL, y no estoy seguro, si existe uno en SQL genérico o SQLite.

Mi idea es que podría verse algo así como:

 select * from Articles where concat(title, ',', category, ',', post) like '%Bla%' 

¿Quizás quieras concatenar tus campos en una sola cadena y luego GUSTAR en contra de eso?

 select * from Articles where (title || ';' || category || ';' || post) like '%Bla%' 

Los puntos y comas intermedios son arbitrarios y están ahí para garantizar que "ROB" y "lance" no devuelvan un falso positivo.

Si no quiere proporcionar los campos, es más complicado …