[sql] 하나의 SQL 문에서 varchar [n] 필드의 크기를 얻는 방법은 무엇입니까?

“Remarks”라는 varchar [1000] 필드가있는 SQL 테이블이 있다고 가정합니다.

실행될 때 1000을 반환하거나 앞으로 varchar 필드의 크기가 변경 될 수있는 단일 SQL 문을 만들고 싶습니다.

같은 것 SELECT size(Remarks) FROM mytable.

어떻게해야합니까?



답변

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


답변

특히 SQL Server에서 :

SELECT DATALENGTH(Remarks) AS FIELDSIZE FROM mytable

선적 서류 비치


답변

SQL Server (2008 이상) :

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

COLUMNPROPERTY는 열 또는 매개 변수 (id, 열 / 매개 변수, 속성)에 대한 정보를 반환합니다. PRECISION 속성은 열 또는 매개 변수의 데이터 유형 길이를 반환합니다.

COLUMNPROPERTY 문서


답변

이것은 SQL SERVER에서 작동합니다 …

SELECT COL_LENGTH('Table', 'Column')


답변

컬럼의 총 크기를 찾고 있었고이 기사를 쳤습니다. 내 솔루션은 MarcE를 기반으로합니다.

SELECT sum(DATALENGTH(your_field)) AS FIELDSIZE FROM your_table


답변

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


답변

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