Me gustaría consultar el nombre de todas las columnas de una tabla. Encontré cómo hacer esto en:
Pero necesito saber: ¿cómo se puede hacer esto en Microsoft SQL Server (2008 en mi caso)?
SELECT TOP 0 * FROM my_table
es menos pulsaciones de teclas
Me gustaría consultar el nombre de todas las columnas de una tabla. Encontré cómo hacer esto en:
Pero necesito saber: ¿cómo se puede hacer esto en Microsoft SQL Server (2008 en mi caso)?
SELECT TOP 0 * FROM my_table
es menos pulsaciones de teclas
Respuestas:
Puede obtener esta información y mucho, mucho más consultando las vistas del esquema de información .
Esta consulta de muestra:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Se puede realizar sobre todos estos objetos de base de datos:
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
esto funciona para mí
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
ya que estoy en localhost y tengo varias tablas con el mismo nombre pero en diferentes bases de datos.
Puede usar el procedimiento almacenado sp_columns que devolvería información relativa a todas las columnas para una tabla dada. Puede encontrar más información aquí http://msdn.microsoft.com/en-us/library/ms176077.aspx
También puede hacerlo mediante una consulta SQL. Algo como esto debería ayudar:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
O una variación sería:
SELECT o.Name, c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
Esto obtiene todas las columnas de todas las tablas, ordenadas por nombre de tabla y luego por nombre de columna.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Esto es mejor que obtener sys.columns
porque se muestra DATA_TYPE
directamente.
AND TABLE_SCHEMA = 'schemaName'
la WHERE
cláusula.
JOIN sys.types t on c.system_type_id = t.system_type_id
y agregar t.name
su declaración 'SELECCIONAR' para obtener los tipos junto al nombre de cada columna también.
Puede usar sp_help
en SQL Server 2008.
sp_help <table_name>;
Método abreviado de teclado para el comando anterior: seleccione el nombre de la tabla (es decir, resáltelo) y presione ALT+ F1.
Puede escribir esta consulta para obtener el nombre de columna y todos los detalles sin usar INFORMATION_SCHEMA en MySql:
SHOW COLUMNS FROM database_Name.table_name;
--This is another variation used to document a large database for conversion (Edited to --remove static columns)
SELECT o.Name as Table_Name
, c.Name as Field_Name
, t.Name as Data_Type
, t.length as Length_Size
, t.prec as Precision_
FROM syscolumns c
INNER JOIN sysobjects o ON o.id = c.id
LEFT JOIN systypes t on t.xtype = c.xtype
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
--In the left join, c.type is replaced by c.xtype to get varchar types
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position
Solo ejecuta este comando
EXEC sp_columns 'Your Table Name'
A esta pregunta SO le falta el siguiente enfoque:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Verificará si la tabla basetable
es la dada .
SELECT
T.TABLE_NAME AS 'TABLE NAME',
C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
WHERE T.TABLE_TYPE='BASE TABLE'
AND T.TABLE_NAME LIKE 'Your Table Name'
Puede intentar esto. Esto proporciona todos los nombres de columna con sus respectivos tipos de datos.
desc <TABLE NAME> ;
puedes usar esta consulta
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name
Otra opción que podría decirse que es más intuitiva es:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Esto le da todos los nombres de sus columnas en una sola columna. Si le interesan otros metadatos, puede cambiar la edición de SELECT STATEMENT TO SELECT *
.
Resumiendo las respuestas
Puedo ver muchas respuestas diferentes y formas de hacer esto, pero hay un problema en esto y ese es el objective
.
Sí, el objetivo. Si desea only know
los nombres de columna, puede usar
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Pero si desea use
esas columnas en algún lugar o simplemente decirlas manipulate
, las consultas rápidas anteriores no serán de ninguna utilidad. Necesitas usar
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
Una forma más de conocer algunas columnas específicas donde necesitamos algunas columnas similares
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
SELECT * FROM my_table WHERE 1=0