복붙노트

[SQL] 어떻게 하나의 SQL 문에서 VARCHAR [N] 필드의 크기를 얻으려면?

SQL

어떻게 하나의 SQL 문에서 VARCHAR [N] 필드의 크기를 얻으려면?

나는 VARCHAR "주의"라고 [1000] 필드가있는 SQL 테이블이 있다고 가정하자.

나는 실행될 때, 1000, 또는 무엇이든 VARCHAR 필드의 크기는 향후 변경 될 수를 반환하는 하나의 SQL 문을, 공예 싶습니다.

SELECT 크기와 같은 뭔가 MYTABLE FROM (비고).

이걸 어떻게해야합니까?

해결법

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

    1.

    select column_name, data_type, character_maximum_length    
      from information_schema.columns  
     where table_name = 'myTable'
    
  2. ==============================

    2.특히 SQL 서버에서 :

    특히 SQL 서버에서 :

    SELECT DATALENGTH(Remarks) AS FIELDSIZE FROM mytable
    

    선적 서류 비치

  3. ==============================

    3.SQL 서버 (이상 2008 년)의 경우 :

    SQL 서버 (이상 2008 년)의 경우 :

    SELECT COLUMNPROPERTY(OBJECT_ID('mytable'), 'Remarks', 'PRECISION');
    

    COLUMNPROPERTY 컬럼 또는 파라미터 (ID 컬럼 / 파라미터 등록)에 대한 정보를 반환한다. 정밀도 속성은 열 또는 매개 변수의 데이터 유형의 길이를 반환합니다.

    COLUMNPROPERTY 문서

  4. ==============================

    4.이 SQL 서버에서 작동합니다 ...

    이 SQL 서버에서 작동합니다 ...

    SELECT COL_LENGTH('Table', 'Column')
    
  5. ==============================

    5.나는 컬럼의 총 크기를 찾고이 문서를 맞았다는, 내 솔루션은 MarcE의의 기반으로한다.

    나는 컬럼의 총 크기를 찾고이 문서를 맞았다는, 내 솔루션은 MarcE의의 기반으로한다.

    SELECT sum(DATALENGTH(your_field)) AS FIELDSIZE FROM your_table
    
  6. ==============================

    6.t-SQL 위해 나는 VARCHAR 컬럼 (쇼 데이터 정렬 및 is_null 속성)에 대해 다음 쿼리를 사용 :

    t-SQL 위해 나는 VARCHAR 컬럼 (쇼 데이터 정렬 및 is_null 속성)에 대해 다음 쿼리를 사용 :

    SELECT
        s.name
        , o.name as table_name
        , c.name as column_name
        , t.name as type
        , c.max_length
        , c.collation_name
        , c.is_nullable
    FROM
        sys.columns c
        INNER JOIN sys.objects o ON (o.object_id = c.object_id)
        INNER JOIN sys.schemas s ON (s.schema_id = o.schema_id)
        INNER JOIN sys.types t ON (t.user_type_id = c.user_type_id)
    WHERE
        s.name = 'dbo'
        AND t.name IN ('varchar') -- , 'char', 'nvarchar', 'nchar')
    ORDER BY
        o.name, c.name
    
  7. ==============================

    7.

    select column_name, data_type, character_maximum_length    
    from INFORMATION_SCHEMA.COLUMNS
    where table_name = 'Table1'
    
  8. ==============================

    8.이것은 VARCHAR NN ()에 대한 최대 유효 길이를 계산하기위한 함수이다 :

    이것은 VARCHAR NN ()에 대한 최대 유효 길이를 계산하기위한 함수이다 :

    CREATE FUNCTION [dbo].[GetMaxVarcharColumnLength] (@TableSchema NVARCHAR(MAX), @TableName NVARCHAR(MAX), @ColumnName VARCHAR(MAX))
    RETURNS INT
    AS
    BEGIN
        RETURN (SELECT character_maximum_length FROM information_schema.columns  
                WHERE table_schema = @TableSchema AND table_name = @TableName AND column_name = @ColumnName);
    END
    

    용법:

    IF LEN(@Name) > [dbo].[GetMaxVarcharColumnLength]('person', 'FamilyStateName', 'Name') 
                RETURN [dbo].[err_Internal_StringForVarcharTooLong]();
    
  9. from https://stackoverflow.com/questions/5705316/how-to-get-the-size-of-a-varcharn-field-in-one-sql-statement by cc-by-sa and MIT license