복붙노트

[SQL] SQL 문은 열 유형을 얻을 수 있습니다

SQL

SQL 문은 열 유형을 얻을 수 있습니다

테이블의 컬럼의 형식을 반환 할 수있는 SQL 문이 있습니까?

해결법

  1. ==============================

    1.SQL Server를 사용 :

    SQL Server를 사용 :

    SELECT DATA_TYPE 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE 
         TABLE_NAME = 'yourTableName' AND 
         COLUMN_NAME = 'yourColumnName'
    
  2. ==============================

    2.TSQL에서 가장 쉬운 방법은 다음과 같습니다

    TSQL에서 가장 쉬운 방법은 다음과 같습니다

    SELECT COLUMN_NAME, DATA_TYPE 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'yourTableName'
    
  3. ==============================

    3.SQL Server의 경우,이 시스템 저장 프로 시저 컬럼 데이터 유형을 포함, 모든 테이블 정보를 반환합니다 :

    SQL Server의 경우,이 시스템 저장 프로 시저 컬럼 데이터 유형을 포함, 모든 테이블 정보를 반환합니다 :

    exec sp_help YOURTABLENAME
    
  4. ==============================

    4.TSQL / MSSQL에서 그것은 다음과 같습니다

    TSQL / MSSQL에서 그것은 다음과 같습니다

    SELECT t.name, c.name 
    FROM sys.tables t 
    JOIN sys.columns c ON t.object_id = c.object_id
    JOIN sys.types y ON y.user_type_id = c.user_type_id
    WHERE t.name = ''
    
  5. ==============================

    5.오라클 SQL에서이 작업을 수행합니다 :

    오라클 SQL에서이 작업을 수행합니다 :

    SELECT
        DATA_TYPE
    FROM
        all_tab_columns 
    WHERE
        table_name = 'TABLE NAME' -- in uppercase
    AND column_name = 'COLUMN NAME' -- in uppercase
    
  6. ==============================

    6.당신이 MySQL을 사용하는 경우 당신은 시도 할 수

    당신이 MySQL을 사용하는 경우 당신은 시도 할 수

    SHOW COLUMNS FROM `tbl_name`;
    

    dev.mysql.com에 열 표시

    그렇지 않으면 당신은 할 수 있어야

    DESCRIBE `tbl_name`;
    
  7. ==============================

    7.MS SQL을 사용하여 또 다른 변화 :

    MS SQL을 사용하여 또 다른 변화 :

    SELECT TYPE_NAME(system_type_id) 
    FROM sys.columns 
    WHERE name = 'column_name'
    AND [object_id] = OBJECT_ID('[dbo].[table_name]');
    
  8. ==============================

    8.ALL / MSSYAL 사용

    ALL / MSSYAL 사용

    이 쿼리는 당신을 얻을 것이다 : 테이블 이름, 열 이름, 데이터 유형, 데이터 유형 길이 및 허용 널 (null)

    SELECT TABLE_NAME,COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'your_table_name'
    

    변경해야 할 유일한 것은 your_table_name입니다.

  9. ==============================

    9.

    USE [YourDatabaseName]
    GO
    
    SELECT column_name 'Column Name',
    data_type 'Data Type'
    FROM information_schema.columns
    WHERE table_name = 'YourTableName'
    GO
    

    이렇게하면 열 이름을 보여주는 값의 열 이름을 반환하고, 그 열의 데이터 형식 (int 치의은,, 등으로 VARCHAR).

  10. ==============================

    10.IBM DB2의 경우 :

    IBM DB2의 경우 :

    SELECT TYPENAME FROM SYSCAT.COLUMNS WHERE TABSCHEMA='your_schema_name' AND TABNAME='your_table_name' AND COLNAME='your_column_name'
    
  11. ==============================

    11.위의 답변에 구축하기 위해, 당신이 열을 선언해야하는 것과 같은 형식의 열 데이터 유형을 얻기 위해 종종 유용하다.

    위의 답변에 구축하기 위해, 당신이 열을 선언해야하는 것과 같은 형식의 열 데이터 유형을 얻기 위해 종종 유용하다.

    예를 들어, VARCHAR (50) VARCHAR (최대), 소수 (p는, S).

    이것은 당신이 할 수 있습니다 :

    SELECT 
      [Name]         = c.[name]
    , [Type]         = 
        CASE 
          WHEN tp.[name] IN ('varchar', 'char') THEN tp.[name] + '(' + IIF(c.max_length = -1, 'max', CAST(c.max_length AS VARCHAR(25))) + ')' 
          WHEN tp.[name] IN ('nvarchar','nchar') THEN tp.[name] + '(' + IIF(c.max_length = -1, 'max', CAST(c.max_length / 2 AS VARCHAR(25)))+ ')'      
          WHEN tp.[name] IN ('decimal', 'numeric') THEN tp.[name] + '(' + CAST(c.[precision] AS VARCHAR(25)) + ', ' + CAST(c.[scale] AS VARCHAR(25)) + ')'
          WHEN tp.[name] IN ('datetime2') THEN tp.[name] + '(' + CAST(c.[scale] AS VARCHAR(25)) + ')'
          ELSE tp.[name]
        END
    , [RawType]      = tp.[name]
    , [MaxLength]    = c.max_length
    , [Precision]    = c.[precision]
    , [Scale]        = c.scale
    FROM sys.tables t 
    JOIN sys.schemas s ON t.schema_id = s.schema_id
    JOIN sys.columns c ON t.object_id = c.object_id
    JOIN sys.types tp ON c.user_type_id = tp.user_type_id
    WHERE s.[name] = 'dbo' AND t.[name] = 'MyTable'
    
  12. ==============================

    12.ALTER 열 동적 SQL에 사용 예를 들어, 실제 선언 된 데이터 유형을 검색하려면이 같은 것을 사용할 수 있습니다 :

    ALTER 열 동적 SQL에 사용 예를 들어, 실제 선언 된 데이터 유형을 검색하려면이 같은 것을 사용할 수 있습니다 :

    SELECT
        TABLE_NAME, 
        COLUMN_NAME,
        DATA_TYPE
            + CASE WHEN DATA_TYPE IN ('char','nchar','varchar','nvarchar','binary','varbinary')
                        AND CHARACTER_MAXIMUM_LENGTH > 0 THEN
                     COALESCE('('+CONVERT(varchar,CHARACTER_MAXIMUM_LENGTH)+')','')
                ELSE '' END
            + CASE WHEN DATA_TYPE IN ('decimal','numeric') THEN
                    COALESCE('('+CONVERT(varchar,NUMERIC_PRECISION)+','+CONVERT(varchar,NUMERIC_SCALE)+')','')
                ELSE '' END
            AS Declaration_Type,
        CASE WHEN IS_NULLABLE='NO' THEN 'NOT ' ELSE '' END + 'NULL' AS Nullable
    FROM INFORMATION_SCHEMA.COLUMNS
    ORDER BY 1,2
    
  13. ==============================

    13.내 경우에는 내가 여기 어쨌든 함수 내가 그 반환 전체 데이터 유형을 만든 것입니다 동적 SQL (전율!)에 대한 데이터 유형을 얻을 필요가 있었다. 반환하는 대신 '소수'의 예를 들어 그것은 (18,4) DECIMAL을 반환 : dbo.GetLiteralDataType를

    내 경우에는 내가 여기 어쨌든 함수 내가 그 반환 전체 데이터 유형을 만든 것입니다 동적 SQL (전율!)에 대한 데이터 유형을 얻을 필요가 있었다. 반환하는 대신 '소수'의 예를 들어 그것은 (18,4) DECIMAL을 반환 : dbo.GetLiteralDataType를

  14. ==============================

    14.ALL / MSSYAL 사용

    ALL / MSSYAL 사용

    당신은 키워드 INTO 사용할 수 있습니다.

    실제 테이블에 SELECT의 결과

    예 : real_table_name INTO .... 선택

    sp_help real_table_name
    
  15. ==============================

    15.스키마, 테이블, 열, 유형, MAX_LENGTH, IS_NULLABLE 얻을이 쿼리를 사용하여

    스키마, 테이블, 열, 유형, MAX_LENGTH, IS_NULLABLE 얻을이 쿼리를 사용하여

    SELECT QUOTENAME(SCHEMA_NAME(tb.[schema_id])) AS 'Schema'
        ,QUOTENAME(OBJECT_NAME(tb.[OBJECT_ID])) AS 'Table'
        ,C.NAME as 'Column'
        ,T.name AS 'Type'
        ,C.max_length
        ,C.is_nullable
    FROM SYS.COLUMNS C INNER JOIN SYS.TABLES tb ON tb.[object_id] = C.[object_id]
        INNER JOIN SYS.TYPES T ON C.system_type_id = T.user_type_id
    WHERE tb.[is_ms_shipped] = 0
    ORDER BY tb.[Name]
    
  16. ==============================

    16.

    SHOW COLUMNS FROM //table_name// ;
    

    그것은 테이블의 모든 컬럼에 대해 당신에게 정보를 제공 할 것입니다.

  17. ==============================

    17.스파크 SQL의 경우 :

    스파크 SQL의 경우 :

    DESCRIBE [db_name.]table_name column_name
    
  18. ==============================

    18.아파치 더비를 들어이 답변에서와 같이

    아파치 더비를 들어이 답변에서와 같이

    select columndatatype from sys.syscolumns
      where referenceid = (
        select tableid from sys.systables
        where tablename = 'YOUR_TABEL_NAME'
        and columnname= 'YOUR_COLUMN_NAME')
    
  19. ==============================

    19.vb60에서 당신은이 작업을 수행 할 수 있습니다

    vb60에서 당신은이 작업을 수행 할 수 있습니다

    Public Cn As ADODB.Connection
    'open connection
    Dim Rs As ADODB.Recordset
     Set Rs = Cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, UCase("Table"), UCase("field")))
    

    '샘플 (valRs)는 rs.fields 내 기능 ( "CHARACTER_MAXIMUM_LENGTH을"입니다 값입니다.)

     RT_Charactar_Maximum_Length = (ValRS(Rs, "CHARACTER_MAXIMUM_LENGTH"))
            rt_Tipo = (ValRS(Rs, "DATA_TYPE"))
    
  20. ==============================

    20.어떤 사람들은 데이터 유형뿐만 아니라 정밀도를 요구 되었기 때문에, 나는 이러한 목적을 위해 만든 나의 스크립트를 공유하고 싶습니다.

    어떤 사람들은 데이터 유형뿐만 아니라 정밀도를 요구 되었기 때문에, 나는 이러한 목적을 위해 만든 나의 스크립트를 공유하고 싶습니다.

    SELECT TABLE_NAME As 'TableName'
           COLUMN_NAME As 'ColumnName'
           CONCAT(DATA_TYPE, '(', COALESCE(CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, DATETIME_PRECISION, ''), IIF(NUMERIC_SCALE <> 0, CONCAT(', ', NUMERIC_SCALE), ''), ')', IIF(IS_NULLABLE = 'YES', ', null', ', not null')) As 'ColumnType'
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE -- ...
    ORDER BY 'TableName', 'ColumnName'
    

    그것은 완벽 하진하지만 대부분의 경우에 작동합니다.

    SQL-Server를 사용

  21. ==============================

    21.MS SQL에 대한 또 다른 옵션은 당신이 유형을 원하는 쿼리를 여기에 선택 쿼리를 대체하는 것입니다 :

    MS SQL에 대한 또 다른 옵션은 당신이 유형을 원하는 쿼리를 여기에 선택 쿼리를 대체하는 것입니다 :

    declare @sql varchar(4000);
    
    set @sql = 'select ''hi'' as greeting';
    
    select * from master.sys.dm_exec_describe_first_result_set (@sql, Null, 0);
    
  22. from https://stackoverflow.com/questions/13405572/sql-statement-to-get-column-type by cc-by-sa and MIT license