테이블의 열 이름을 반환하려면 어떻게 해야 합니까?
SQL Server 2008을 사용하여 테이블의 열 이름을 반환하려면 어떻게 해야 합니까?즉, 테이블에 ID, 이름, 주소, 국가 등의 열이 포함되어 있으며 데이터로서 반환하고 싶습니다.
2008년 버전에는 더 쉬운 방법이 없을지 모르겠습니다.
USE [Database Name]
SELECT COLUMN_NAME,*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName' AND TABLE_SCHEMA='YourSchemaName'
이것이 가장 쉬운 방법이다.
exec sp_columns [tablename]
이런 거?
sp_columns @table_name=your table name
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
이거 먹어봐
select * from <tablename> where 1=2
...............................................
OBJECT_ID() 함수를 사용하여 테이블 ID를 찾기 때문에 위의 제안보다 조금 쉬워 보입니다.이 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
사용하고 있다
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%'
다음은 위의 첫 번째 제안 쿼리와 비슷하지만, 작동하려면 데이터베이스를 지정해야 할 경우가 있습니다.쿼리는 TABLE_SCHEMA를 지정하지 않아도 동작합니다.
SELECT COLUMN_NAME
FROM YOUR_DB_NAME.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TABLE_SCHEMA = 'YOUR_DB_NAME'
그냥 이렇게 해보는 게 어때?
테이블 우클릭 -> 스크립트 테이블 As -> 작성처 -> 새 쿼리 에디터 창?
열의 전체 목록이 스크립트에 표시됩니다.복사하고 필요에 따라 필드를 사용합니다.
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
syscolumns.colid 값이 sp_columns의 일부로 반환된 'ORDINAL_POSITION' 값과 동일한지 확실하지 않습니다.다만, 그 후에 이 값을 사용하고 있습니다.잘못된 정보가 아니길 바랍니다.
여기 제가 찾은 다른 답변에 대한 약간의 변화가 있습니다. 이 답변은 표에서 열의 '위치' 또는 순서가 중요하기 때문에 사용하는 것입니다. 기본적으로 '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
@Gulzar Nazim의 답변은 훌륭하지만 다음 SQL을 통해 얻을 수 있는 쿼리에 데이터베이스 이름을 포함하는 것이 더 쉬울 수 있습니다.
SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'you-table-name' AND TABLE_CATALOG='your-database-name'
아래 코드를 사용하여 모든 열 이름을 인쇄할 수 있습니다. 코드를 수정하여 원하는 형식으로 다른 세부 정보를 인쇄할 수도 있습니다.
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
산출량
column1
column2
column3
column4
C# 클래스와 동일한 코드를 사용하여 테이블 및 해당 컬럼 이름을 인쇄하려면 다음 코드를 사용합니다.
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"; } }
}
DECLARE @col NVARCHAR(MAX);
SELECT @col= COALESCE(@col, '') + ',' + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE Table_name = 'MxLocations';
SELECT @col;
postgresql을 사용하는 경우 다음 쿼리를 적용할 경우 여러 스키마에 동일한 이름의 테이블이 있을 수 있습니다.
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'your_table_name' AND table_schema = 'your_schema_name’;
Martin Smith가 언급한 것과 같은 질문을 조금 더 짧게 하겠습니다.
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
SysColumns는 권장되지 않으므로 다음을 사용합니다.
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.Typesuser_type_id = ID은 데이터베이스.이것은 데이터베이스 내에서 고유합니다.타입의 : " " " "user_type_id = system_type_id
set fmtonly on
select * from yourTable
언급URL : https://stackoverflow.com/questions/600446/how-do-you-return-the-column-names-of-a-table
'codememo' 카테고리의 다른 글
| PowerShell에서 SQL Server 쿼리를 실행하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
|---|---|
| SQL Server에서의 DateTime2와 DateTime (0) | 2023.04.08 |
| 이 시스템에서 실행 중인 스크립트를 사용하지 않도록 설정되었기 때문에 ps1을 로드할 수 없습니다. (0) | 2023.04.08 |
| SQL Server 문자열 또는 이진 데이터가 잘립니다. (0) | 2023.04.08 |
| SQL Server에서 기존 테이블에 자동 증가 기본 키 추가 (0) | 2023.04.08 |