Pregunta Encuentra todas las tablas que contienen la columna con el nombre especificado - MS SQL Server


¿Es posible buscar nombres de tablas que contengan columnas?

LIKE '%myName%'

?


854
2018-01-31 10:12


origen


Respuestas:


Tablas de búsqueda:

SELECT      c.name  AS 'ColumnName'
            ,t.name AS 'TableName'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
WHERE       c.name LIKE '%MyName%'
ORDER BY    TableName
            ,ColumnName;

Tablas de búsqueda y vistas:

SELECT      COLUMN_NAME AS 'ColumnName'
            ,TABLE_NAME AS  'TableName'
FROM        INFORMATION_SCHEMA.COLUMNS
WHERE       COLUMN_NAME LIKE '%MyName%'
ORDER BY    TableName
            ,ColumnName;

1382
2018-01-31 10:17



También podemos usar la siguiente sintaxis:

select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME like '%clientid%' 
order by TABLE_NAME

221
2017-10-18 12:45



SQL Server:

SELECT Table_Name, Column_Name 
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YOUR_DATABASE'
AND   COLUMN_NAME LIKE '%YOUR_COLUMN%'

Oracle:

SELECT owner,table_name, column_name 
FROM all_tab_columns 
WHERE column_name like '%YOUR_COLUMN_NAME%'
AND OWNER in ('YOUR_SCHEMA_NAME');
  • ¡¡SIMPLE COMO ESO!! (SQL, PL / SQL) Lo uso TODO el tiempo para encontrar TODAS las instancias de un nombre de columna en una base de datos dada (esquema).

69
2017-09-22 18:56



Si te gustan más las herramientas de terceros, hay muchas opciones allí, como:

Estos son muy útiles si su base de datos contiene objetos encriptados (vistas, procedimientos, funciones) porque no puede buscarlos fácilmente usando tablas del sistema.


57
2018-04-14 01:06



Esto debería funcionar:

SELECT name 
FROM sysobjects 
WHERE id IN ( SELECT id 
              FROM syscolumns 
              WHERE name like '%column_name%' )

56
2018-01-31 10:17



select  
        s.[name]            'Schema',
        t.[name]            'Table',
        c.[name]            'Column',
        d.[name]            'Data Type',
        d.[max_length]      'Max Length',
        d.[precision]       'Precision',
        c.[is_identity]     'Is Id',
        c.[is_nullable]     'Is Nullable',
        c.[is_computed]     'Is Computed',
        d.[is_user_defined] 'Is UserDefined',
        t.[modify_date]     'Date Modified',
        t.[create_date]     'Date created'
from        sys.schemas s
inner join  sys.tables  t
on s.schema_id = t.schema_id
inner join  sys.columns c
on t.object_id = c.object_id
inner join  sys.types   d
on c.user_type_id = d.user_type_id
where c.name like '%ColumnName%'

Esto aquí le dará un poco de información adicional sobre el esquema, las tablas y las columnas en las que puede optar o no por usar condiciones adicionales en su cláusula where para filtrar. Por ejemplo, si solo desea ver los campos que deben tener valores, agregue

and c.is_nullable = 0

Puede agregar otros condicionales, también agregué las columnas en la cláusula de selección de esta manera vertical, por lo que era fácil reordenar, eliminar, cambiar el nombre o agregar otros en función de sus necesidades. Alternativamente, puede buscar solo tablas usando T.Name. Es muy personalizable.

Disfrutar.


45
2018-03-27 13:42



No sé por qué tantos de ustedes sugieren unirse con sys.table with sys.columns simplemente puede usar el siguiente código:

Select object_name(object_id) as TableName,* from SYS.columns where name LIKE '%MyName%'

o

Si también quieres el nombre del esquema:

Select * from  INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME LIKE '%MyName%'

37
2017-08-19 14:24