> 데이터 베이스 > MySQL 튜토리얼 > 매개변수를 포함하는 SQL 열의 전체 데이터 유형을 얻는 방법은 무엇입니까?

매개변수를 포함하는 SQL 열의 전체 데이터 유형을 얻는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-27 18:58:14
원래의
387명이 탐색했습니다.

How to Get the Complete Data Type of a SQL Column Including Parameters?

SQL에서 열 유형 가져오기

테이블에 있는 특정 열의 데이터 유형을 얻으려면 INFORMATION_SCHEMA.COLUMNS 시스템을 활용할 수 있습니다. 보다. 이 보기는 SQL Server를 포함한 ISO SQL에서 지원됩니다.

INFORMATION_SCHEMA.COLUMNS 보기 내의 DATA_TYPE 열은 기본 SQL Server/T-SQL 유형 이름을 제공합니다. 그러나 이 정보에는 매개변수화된 유형에 대한 인수가 포함되지 않을 수 있으며, 이로 인해 경우에 따라 예상치 못한 동작이 발생할 수 있습니다.

예를 들어 nvarchar(max), datetime2(3) 및 데이터 유형이 있는 세 개의 열을 생각해 보세요. 십진수(10,5). 해당 INFORMATION_SCHEMA.COLUMNS 출력에는 nvarchar, datetime2 및 10진수만 표시됩니다.

유형의 매개변수 값을 완전히 재구성하려면 INFORMATION_SCHEMA.COLUMNS 보기에서 추가 열을 검사하는 것이 좋습니다.

  • CHARACTER_OCTET_LENGTH(용 바이너리)
  • CHARACTER_MAXIMUM_LENGTH(char 및 nchar의 경우)
  • DATETIME_PRECISION(datetime2 및 datetimeoffset의 경우)
  • NUMERIC_PRECISION 및 NUMERIC_SCALE(십진수 및 숫자의 경우)

를 위해 예를 들어, 다음 SQL 쿼리는 특정 열에 대한 세부 데이터 유형을 검색하는 방법을 보여줍니다.

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;
로그인 후 복사

이 쿼리는 다음 형식으로 결과를 반환합니다.

TABLE_SCHEMA | TABLE_NAME | ORDINAL_POSITION | COLUMN_NAME | FULL_DATA_TYPE
yourSchemaName | yourTableName | 1 | yourColumnName | nvarchar(max) NOT NULL
로그인 후 복사

위 내용은 매개변수를 포함하는 SQL 열의 전체 데이터 유형을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿