Как мне вернуть имена столбцов таблицы с помощью SQL Server 2008? то есть таблица содержит эти столбцы - идентификатор, имя, адрес, страну, и я хочу вернуть их как данные.
Как вы возвращаете имена столбцов таблицы?
Ответ 1
Не уверен, есть ли более простой способ в версии 2008 года.
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
Ответ 2
Это самый простой способ
exec sp_columns [tablename]
Ответ 3
Что-то вроде этого?
sp_columns @table_name=your table name
Ответ 4
Один метод заключается в запросе 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
Ответ 5
Это выглядит немного проще, чем приведенные выше предложения, потому что для определения идентификатора таблицы используется функция OBJECT_ID(). Любой столбец с этим идентификатором является частью таблицы.
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
Я обычно использую аналогичный запрос, чтобы увидеть, есть ли столбец, который я знаю, является частью более новой версии. Это тот же запрос с добавлением {AND name= 'YOUR_COLUMN'} в предложение where.
IF EXISTS (
SELECT *
FROM syscolumns
WHERE id=OBJECT_ID('YOUR_TABLE')
AND name='YOUR_COLUMN'
)
BEGIN
PRINT 'Column found'
END
Ответ 6
Я использую
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%'
Ответ 7
Следующее похоже на первый предложенный запрос выше, но иногда вам нужно указать базу данных, чтобы заставить ее работать. Обратите внимание, что запрос также должен работать без указания TABLE_SCHEMA:
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
Ответ 8
попробуйте это
select * from <tablename> where 1=2
...............................................
Ответ 9
USE[Database]
SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type]
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='dbo'
Ответ 10
Я не уверен, что значение syscolumns.colid совпадает с значением "ORDINAL_POSITION", возвращаемым как часть sp_columns, но в дальнейшем я использую его таким образом - надеюсь, что я не дезинформирую...
Вот небольшая вариация некоторых других ответов, которые я нашел - я использую это, потому что "позиция" или порядок столбца в таблице важны в моем приложении - мне в основном нужно знать "Что такое столбец ( n) называется? '
sp_columns возвращает целую кучу посторонних вещей, и я более удобен с функциями, отличными от T-SQL, поэтому я пошел по этому маршруту:
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
Ответ 11
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 [email protected]
order by ORDINAL_POSITION
END
END
Ответ 12
Почему бы просто не попробовать:
щелкните правой кнопкой мыши по таблице → Script Таблица As → Создать в → Новый редактор запросов Окно?
Весь список столбцов приведен в script. Скопируйте его и используйте поля по мере необходимости.
Ответ 13
Вы можете использовать приведенный ниже код для печати всех имен столбцов; Вы также можете изменить код для печати других деталей в любом формате u, например,
declare @Result varchar(max)='
'
select @[email protected]+''+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
Выход
column1
column2
column3
column4
Чтобы использовать тот же код для печати таблицы и ее имени столбца, как класс С#, используйте приведенный ниже код:
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
Вывод:
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"; } }
}
Ответ 14
Я просто использую такой запрос, как упоминал Мартин Смит, немного короче:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
Ответ 15
В то время как ответ @Gulzar Nazim велик, возможно, проще включить имя базы данных в запрос, что может быть достигнуто с помощью следующего SQL.
SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
Ответ 16
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
Ответ 17
Так как SysColumns устарел, используйте 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
даст user_type_id = ID
типа. Это уникально в базе данных. Для системных типов данных: user_type_id = system_type_id
.
Ответ 18
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = 'MxLocations';
SELECT @col;
Ответ 19
set fmtonly on
select * from yourTable