>데이터 베이스 >MySQL 튜토리얼 >INFORMATION_SCHEMA를 사용하여 SQL 열의 데이터 유형을 결정하는 방법은 무엇입니까?

INFORMATION_SCHEMA를 사용하여 SQL 열의 데이터 유형을 결정하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-27 16:44:11309검색

How to Determine a SQL Column's Data Type Using INFORMATION_SCHEMA?

열 데이터 유형을 결정하는 SQL 문

데이터베이스 관리 영역에서는 테이블 열과 관련된 데이터 유형을 이해하는 것이 중요합니다. SQL은 테이블의 구조와 속성에 대한 포괄적인 보기를 제공합니다. 여기에는 특정 SQL 문을 사용하여 열 데이터 유형에 대한 정보를 검색하는 기능이 포함됩니다.

INFORMATION_SCHEMA.COLUMNS

INFORMATION_SCHEMA.COLUMNS 뷰는 쿼리를 위한 강력한 도구 역할을 합니다. 데이터베이스 내의 테이블에 대한 메타데이터입니다. 이 보기에는 데이터 유형을 포함하여 열에 대한 다양한 세부 정보가 표시됩니다. DATA_TYPE 열을 활용하면 특정 열의 데이터 유형을 결정할 수 있습니다.

매개변수화 고려 사항

INFORMATION_SCHEMA.COLUMNS의 DATA_TYPE 열이 항상 제공하는 것은 아닐 수도 있습니다. 매개변수화된 데이터 유형에 필요한 모든 정보. 예를 들어 매개변수에 대한 인수가 포함되지 않아 잠재적인 열 동작 문제가 발생할 수 있습니다.

이 문제를 해결하려면 INFORMATION_SCHEMA.COLUMNS 보기 내에서 다음과 같은 추가 열을 참조하는 것이 좋습니다.

  • CHARACTER_OCTET_LENGTH(바이너리의 경우) 유형)
  • CHARACTER_MAXIMUM_LENGTH(문자 및 국가 문자 유형의 경우)
  • DATETIME_PRECISION(datetime2 및 datetimeoffset 유형의 경우)
  • NUMERIC_PRECISION 및 NUMERIC_SCALE(십진수 및 숫자의 경우) 유형)

이러한 열을 결합하면 데이터 유형에 대한 완전한 매개변수화를 재구성할 수 있습니다.

샘플 쿼리

다음 SQL 쿼리는 INFORMATION_SCHEMA.COLUMNS를 사용하여 지정된 열에 대한 전체 데이터 유형 정보를 검색하는 방법을 보여줍니다. 보기:

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 허용 여부를 포함하여 지정된 열의 데이터 유형에 대한 포괄적인 설명이 반환됩니다. 출력 예는 다음과 같습니다.

TABLE_SCHEMA TABLE_NAME ORDINAL_POSITION COLUMN_NAME FULL_DATA_TYPE
yourSchemaName yourTableName 1 yourColumnName nvarchar(max) NOT NULL

위 내용은 INFORMATION_SCHEMA를 사용하여 SQL 열의 데이터 유형을 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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