Respuestas:
No estoy seguro si hay una manera más fácil en la versión 2008.
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
Esta es la manera más fácil
exec sp_columns [tablename]
¿Algo como esto?
sp_columns @table_name=your table name
Un método es consultar syscolumns:
select
syscolumns.name as [Column],
syscolumns.xusertype as [Type],
sysobjects.xtype as [Objtype]
from
sysobjects
inner join
syscolumns on sysobjects.id = syscolumns.id
where sysobjects.xtype = 'u'
and sysobjects.name = 'MyTableName'
order by syscolumns.name
Objtypeembargo, encuentro la columna redundante :)
Esto parece un poco más fácil que las sugerencias anteriores porque usa la función OBJECT_ID () para ubicar la identificación de la tabla. Cualquier columna con esa identificación es parte de la tabla.
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
Normalmente uso una consulta similar para ver si una columna que conozco es parte de una versión más nueva está presente. Es la misma consulta con la adición de {AND name = 'YOUR_COLUMN'} a la cláusula where.
IF EXISTS (
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
AND name='YOUR_COLUMN'
)
BEGIN
PRINT 'Column found'
END
prueba esto
select * from <tablename> where 1=2
...............................................
WHERE 1=2y aún devolverá los metadatos de la columna. Si usa una interfaz programática como ODBC, entonces esta información de columna es accesible como una lista / matriz desde el objeto cursor dentro del programa, que es lo que estaba buscando. Puede que no tenga sentido en un contexto SQL puro, pero es un enfoque sucinto cuando se conecta a una base de datos a través de Python / Java / C / etc.
Lo siguiente parece ser la primera consulta sugerida anteriormente, pero en algún momento debe especificar la base de datos para que funcione. Tenga en cuenta que la consulta también debería funcionar sin especificar TABLE_SCHEMA:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
¿Por qué no probar esto?
haga clic derecho en la tabla -> Tabla de secuencia de comandos como -> Crear para -> ¿Nueva ventana del editor de consultas?
La lista completa de columnas se proporciona en el script. Cópielo y use los campos según sea necesario.
"I want to return these as data", aunque su respuesta obtendrá los valores, es probable que el OP quiera los datos en tiempo de ejecución.
USE[Database]
SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type]
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='dbo'
CREATE PROCEDURE [dbo].[Usp_GetColumnName]
@TableName varchar(50)
AS
BEGIN
BEGIN
SET NOCOUNT ON
IF (@TableName IS NOT NULL)
select ORDINAL_POSITION OrderPosition,COLUMN_NAME ColumnName from information_schema.columns
where table_name =@TableName
order by ORDINAL_POSITION
END
END
No estoy seguro de si el valor syscolumns.colid es el mismo que el valor 'ORDINAL_POSITION' devuelto como parte de sp_columns, pero en lo que sigue lo estoy usando de esa manera, espero no estar desinformando ...
Aquí hay una ligera variación en algunas de las otras respuestas que he encontrado: lo uso porque la 'posición' u orden de la columna en la tabla es importante en mi aplicación, básicamente necesito saber '¿Cómo se llama la columna (n)? ?
sp_columns devuelve un montón de cosas extrañas, y soy más útil con una selección que las funciones T-SQL, así que seguí esta ruta:
select
syscolumns.name,
syscolumns.colid
from
sysobjects, syscolumns
where
sysobjects.id = syscolumns.id and
sysobjects.xtype = 'u' and
sysobjects.name = '<YOUR_TABLE>'
order by syscolumns.colid
Si bien la respuesta de @Gulzar Nazim es excelente, probablemente sea más fácil incluir el nombre de la base de datos en la consulta, lo que podría lograrse con el siguiente SQL.
SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
Puede usar el siguiente código para imprimir todos los nombres de columna; También puede modificar el código para imprimir otros detalles en el formato que desee
declare @Result varchar(max)='
'
select @Result=@Result+''+ColumnName+'
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id('tblPracticeTestSections')
) t
order by ColumnId
print @Result
Salida
column1
column2
column3
column4
Para usar el mismo código para imprimir la tabla y el nombre de su columna como clase C #, use el siguiente código:
declare @TableName sysname = '<EnterTableName>'
declare @Result varchar(max) = 'public class ' + @TableName + '
{'
select @Result = @Result + '
public static string ' + ColumnName + ' { get { return "'+ColumnName+'"; } }
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id(@TableName)
) t
order by ColumnId
set @Result = @Result + '
}'
print @Result
Salida:
public class tblPracticeTestSections
{
public static string column1 { get { return "column1"; } }
public static string column2{ get { return "column2"; } }
public static string column3{ get { return "column3"; } }
public static string column4{ get { return "column4"; } }
}
Solo uso una consulta como Martin Smith mencionó, solo un poco más corta:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
Como SysColumns está en desuso , use Sys.All_Columns:
Select
ObjectName = Object_Name(Object_ID)
,T.Name
,C.*
,T.*
From
Sys.All_Columns C
Inner Join Sys.Types T On T.User_Type_Id = C.User_Type_Id
Where [Object_ID] = Object_ID('Sys.Server_Permissions')
--Order By Name Asc
Select * From Sys.Typescederá user_type_id = IDdel tipo. Esto es único dentro de la base de datos. Para los tipos de datos del sistema: user_type_id = system_type_id.
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = 'MxLocations';
SELECT @col;
SI está trabajando con postgresql, existe la posibilidad de que más de un esquema pueda tener una tabla con el mismo nombre en ese caso, aplique la consulta a continuación
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'your_table_name' AND table_schema = 'your_schema_name’;