>데이터 베이스 >MySQL 튜토리얼 >매개변수 및 Null 허용 여부를 포함하여 SQL 열의 정확한 데이터 유형을 검색하려면 어떻게 해야 합니까?

매개변수 및 Null 허용 여부를 포함하여 SQL 열의 정확한 데이터 유형을 검색하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-26 12:33:11686검색

How Can I Retrieve the Precise Data Type of a SQL Column Including Parameters and Nullability?

SQL을 사용하여 열 유형 가져오기

다양한 데이터베이스 시나리오에서는 테이블에 있는 특정 열의 데이터 유형을 이해하는 것이 중요합니다. 다행히 SQL은 INFORMATION_SCHEMA.COLUMNS 뷰를 통해 열 유형을 검색하는 포괄적인 솔루션을 제공합니다. 이 뷰는 유용한 데이터 유형 정보를 포함하여 데이터베이스 테이블과 해당 열에 대한 메타데이터를 제공합니다.

INFORMATION_SCHEMA.COLUMNS의 DATA_TYPE 열은 열의 기본 데이터 유형을 반환합니다. 그러나 nvarchar 또는 datetime2와 같은 매개 변수화 옵션이 있는 일부 데이터 유형의 경우 기본 유형만으로는 열의 특성을 완전히 설명하기에 충분하지 않을 수 있습니다.

이 문제를 해결하기 위해 뷰의 추가 열을 참조할 수 있습니다. 예를 들어 이진 및 varbinary의 경우 CHARACTER_OCTET_LENGTH, char, nchar, varchar 및 nvarchar의 경우 CHARACTER_MAXIMUM_LENGTH, datetime2 및 datetimeoffset의 경우 DATETIME_PRECISION, 십진수 및 숫자 데이터 유형의 경우 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 허용 여부를 포함한 전체 데이터 유형 정보를 FULL_DATA_TYPE 열에 세심하게 조합합니다. 이 쿼리를 실행하면 특정 열의 정확한 데이터 유형을 검색하고 데이터베이스 스키마를 더 깊이 이해할 수 있습니다.

위 내용은 매개변수 및 Null 허용 여부를 포함하여 SQL 열의 정확한 데이터 유형을 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.