sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta SQL para encontrar un nombre de columna en la base de datos

Entonces, si está utilizando SQL Server, puede ejecutar esto para encontrar todas las columnas en todas las tablas.

select
    'SELECT * FROM ' 
     + st.name + 
     ' WHERE ' + 
       sc.name + ' = ''MICROSOFT'' '
from sys.tables st join sys.columns sc on st.object_id = sc.object_id

Al usar el resultado de esta consulta, crea una lista de todas las combinaciones posibles de SELECCIONES para cada columna en cada tabla.

Esto solo genera la lista de todos los comandos, ahora debe ejecutarlos. Para ejecutar cada comando, debe crear un cursor que recorrerá toda la lista de resultados.

Vas a rodear el anterior SELECT instrucción con un cursor para recorrer cada consulta y ejecutarla. Por lo tanto, el código se convierte en algo como esto

DECLARE @myCommand VARCHAR(1000)

DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
    select
        'SELECT * FROM ' 
         + st.name + 
         ' WHERE ' + 
           sc.name + ' = ''MICROSOFT'' '
    from sys.tables st join sys.columns sc on st.object_id = sc.object_id
OPEN c

FETCH NEXT FROM c INTO @myCommand
WHILE @@FETCH_STATUS = 0
    BEGIN
        sp_executesql @myCommand
    FETCH NEXT FROM c INTO @myCommand
    END

CLOSE c

DEALLOCATE c