최신 관계형 데이터베이스 관리 시스템(RDBMS)에서는 특정 테이블에 대한 열 유형 정보를 얻는 것이 일반적인 요구 사항입니다. 이러한 요구를 해결하기 위해 ISO SQL에서 널리 지원되는 INFORMATION_SCHEMA.COLUMNS 보기는 데이터 유형을 포함하여 열 메타데이터를 검색하는 표준화된 메커니즘을 제공합니다.
INFORMATION_SCHEMA.COLUMNS 보기 내의 DATA_TYPE 열은 기본 T를 표시합니다. -nvarchar, datetime2 및 10진수와 같은 SQL/SQL Server 유형 이름. 그러나 매개변수화된 유형의 매개변수 인수는 제외됩니다. 이러한 생략으로 인해 의도하지 않은 열 동작이 발생할 수 있습니다.
이 문제를 완화하려면 CHARACTER_OCTET_LENGTH(바이너리의 경우), CHARACTER_MAXIMUM_LENGTH(char 및 nchar의 경우), DATETIME_PRECISION(datetime2 및 datetimeoffset의 경우)과 같은 추가 열을 활용하는 것이 중요합니다. 및 NUMERIC_PRECISION 및 NUMERIC_SCALE (십진수 및 숫자의 경우). 이러한 값을 결합하면 해당 매개변수를 포함하여 전체 유형을 재구성할 수 있습니다.
WITH q AS ( SELECT c.TABLE_SCHEMA, c.TABLE_NAME, c.ORDINAL_POSITION, c.COLUMN_NAME, c.DATA_TYPE, CASE WHEN c.DATA_TYPE IN ( N'binary', N'varbinary' ) THEN ( CASE c.CHARACTER_OCTET_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_OCTET_LENGTH , N')' ) END ) WHEN c.DATA_TYPE IN ( N'char', N'varchar', N'nchar', N'nvarchar' ) THEN ( CASE c.CHARACTER_MAXIMUM_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_MAXIMUM_LENGTH, N')' ) END ) WHEN c.DATA_TYPE IN ( N'datetime2', N'datetimeoffset' ) THEN CONCAT( N'(', c.DATETIME_PRECISION, N')' ) WHEN c.DATA_TYPE IN ( N'decimal', N'numeric' ) THEN CONCAT( N'(', c.NUMERIC_PRECISION , N',', c.NUMERIC_SCALE, N')' ) END AS DATA_TYPE_PARAMETER, CASE c.IS_NULLABLE WHEN N'NO' THEN N' NOT NULL' WHEN N'YES' THEN N' NULL' END AS IS_NULLABLE2 FROM INFORMATION_SCHEMA.COLUMNS AS c ) SELECT q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION, q.COLUMN_NAME, CONCAT( q.DATA_TYPE, ISNULL( q.DATA_TYPE_PARAMETER, N'' ), q.IS_NULLABLE2 ) AS FULL_DATA_TYPE FROM q WHERE q.TABLE_SCHEMA = 'yourSchemaName' AND q.TABLE_NAME = 'yourTableName' AND q.COLUMN_NAME = 'yourColumnName' ORDER BY q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION;
이 쿼리는 아래 그림과 같이 매개변수 정보 및 null 허용 여부를 포함하여 전체 데이터 유형을 포함하는 결과를 생성합니다.
[쿼리 결과 이미지]
위 내용은 SQL에서 매개변수 및 Null 허용 여부를 포함한 전체 열 데이터 유형을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!