una - modificar columna sql server
¿Cómo devuelves los nombres de columna de una tabla? (19)
¿Cómo devolvería los nombres de columna de una tabla con SQL Server 2008? es decir, una tabla contiene estas columnas: ID, nombre, dirección, país y deseo devolverlas como datos.
¿Algo como esto?
sp_columns @table_name=your table name
¿Por qué no probar esto?
haga clic con el botón derecho en la tabla -> Script Table As -> Create To -> New Query Editor Window?
La lista completa de columnas se da en el script. Cópialo y usa los campos según sea necesario.
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.Types
producirá user_type_id = ID
del tipo. Esto es único dentro de la base de datos. Para los tipos de datos del sistema: user_type_id = system_type_id
.
Esta es la manera más fácil
exec sp_columns [tablename]
Esto parece un poco más fácil que las sugerencias anteriores porque utiliza la función OBJECT_ID () para ubicar el ID de la tabla. Cualquier columna con ese id es parte de la tabla.
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID(''YOUR_TABLE'')
Normalmente utilizo una consulta similar para ver si una columna que conozco es parte de una versión más reciente. 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
Lo siguiente parece ser como 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 el TABLE_SCHEMA:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''YOUR_TABLE_NAME'' AND TABLE_SCHEMA = ''YOUR_DB_NAME''
No estoy seguro de si el valor de 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 que no esté informando mal ...
Aquí hay una ligera variación de algunas de las otras respuestas que he encontrado: uso esto porque la ''posición'' o el 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 práctico 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
No estoy seguro si hay una forma 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''
Puede utilizar el siguiente código para imprimir todos los nombres de columna; También puede modificar el código para imprimir otros detalles en cualquier 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 su nombre de 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"; } }
}
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''
Solo uso una consulta como mencionó Martin Smith, un poco más corta:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''YourTableName''
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
prueba esto
select * from <tablename> where 1=2
...............................................
yo suelo
SELECT st.NAME, sc.NAME, sc.system_type_id
FROM sys.tables st
INNER JOIN sys.columns sc ON st.object_id = sc.object_id
WHERE st.name LIKE ''%Tablename%''
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
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '''') + '','' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = ''MxLocations'';
SELECT @col;
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N''TableName''
set fmtonly on
select * from yourTable