En este artículo, el último del 2023, te mostraré un query muy útil si trabajas con SQL Server.
Seguro en algún momento habrás intentado buscar si un valor existe en una tabla, pero no quieres ir columna por columna verificando si existe el valor o el registro, sino que quieres que lo busque en todas las columnas de tu tabla.
Esto es especialmente útil cuando no estás seguro de dónde buscar, tú simplemente quieres que te muestre los registros que contienen esa cadena o texto que estás buscando.
Pues bien aquí viene el query!
DECLARE @stringToFind VARCHAR(100) = 'ANA%'
DECLARE @table varchar(80) = 'SOCIO'
BEGIN TRY
DECLARE @sqlCommand varchar(max) = 'SELECT * FROM [' + @table + '] WHERE '
SELECT @sqlCommand = @sqlCommand + '[' + COLUMN_NAME + '] LIKE ''' + @stringToFind + ''' OR '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE --TABLE_SCHEMA = @schema AND
TABLE_NAME = @table
AND DATA_TYPE IN ('char','nchar','ntext','nvarchar','text','varchar','int','decimal')
SET @sqlCommand = left(@sqlCommand,len(@sqlCommand)-3)
EXEC (@sqlCommand)
PRINT @sqlCommand
END TRY
BEGIN CATCH
PRINT 'Hubo un error, verifica los parámetros ingresados'
PRINT error_message()
END CATCH
En este ejemplo quiero que me busque la cadena "Ana" en la tabla llamada "SOCIO"
Si pones una tabla que no existe, recibirás el siguiente mensaje:
Esto te ahorrará mucho tiempo, porque si quisieras buscar una cadena en toda la tabla, tendrías que ir columna por columna armando tu query, gastando mucho tiempo.
Nota cómo en la cadena puedes hacer uso del comodín % para indicarle que puede contener cualquier cosa antes o después de tu palabra a buscar.
Si esta entrada te ha servido o conocer a alguien que le pueda servir, no dudes en compartirla!
Créditos de la foto de portada: Foto de Tim Mossholder en Unsplash