Cómo buscar cadenas en varias columnas a la vez
Muchas veces necesitaremos buscar cadenas que podrian estar en muchas columnas. Esta tarea podriamos realizarlo individualmente, buscando la cadena en cada columna(una por una), o buscar a la vez en todas las columnas. Para ejemplificar un poco, vamos a crear la siguiente tabla:
CREATE TABLE dormitorios (
[id] INT IDENTITY PRIMARY KEY,
[nombre] NVARCHAR(15),
[colorpiso] NVARCHAR(10),
[colortecho] NVARCHAR(10),
[colorpared] NVARCHAR(10))
Ahora, llenamos con data:
INSERT INTO dormitorios
SELECT 'Nhalim','YELLOW','BLUE','BLACK' UNION
SELECT 'Percy','BLACK','WHITE','BLUE' UNION
SELECT 'Saida','BLUE','GREEN','YELLOW' UNION
SELECT 'Yoshit','BLUE','PINK','BLACK'
Bien, ahora, ya teniendo todo listo, pasamos a buscar la cadena 'BLACK' en cada columna, una por una:
SELECT id,nombre
FROM dormitorios
WHERE [colorpiso] = 'BLACK'
OR [colortecho] = 'BLACK'
OR [colorpared] = 'BLACK'
Aquí algo más desastroso, pero que funciona:
SELECT id,nombre
FROM dormitorios
WHERE [colorpiso] LIKE '%BLACK%'
OR [colortecho] LIKE '%BLACK%'
OR [colorpared] LIKE '%BLACK%'
Finalmente te dejo una técnica de cómo buscar a la vez en todas las columnas en lugar de hacerlo individualmente.
SELECT id, nombre
FROM dormitorios
WHERE ':' + colorpiso + ':' + colortecho + ':' + colorpared + ':' LIKE '%:BLACK:%'
Lo que se ha hecho es concatenar y delimitar con dos puntos cada una de las columnas donde se desea buscar la cadena. Una manera bastante práctica e interesante de hacer el mismo trabajo. :).
Saludos cordiales!,


