Я пытаюсь найти запрос, в котором будет указано имя каждого столбца таблицы с максимальной длиной.Запрос на получение MAX LEN каждого поля в таблице SQL
Это в SQL Server 2012.
Любая помощь очень ценится.
Я пытаюсь найти запрос, в котором будет указано имя каждого столбца таблицы с максимальной длиной.Запрос на получение MAX LEN каждого поля в таблице SQL
Это в SQL Server 2012.
Любая помощь очень ценится.
Если вы хотите знать, ваша таблица подробно использовать information_schema.columns
select *
from information_schema.columns
where table_name = 'YourTableName'
Если вы хотите, ДЛИНА с использованием строки поля LEN
select len(field1)
from YourTableName
Вы можете использовать ниже запрос, чтобы получить фактические и используется длина колонн в таблице
DECLARE @TSQL VARCHAR(MAX) = ''
DECLARE @TableName sysname = 't1'
SELECT @TSQL = @TSQL + 'SELECT ' + QUOTENAME(sc.name, '''') + ' AS ColumnName, ' + QUOTENAME(t.name, '''') + ' AS DataType, ' +
QUOTENAME(sc.max_length, '''') + ' AS ActualLength, MAX(DATALENGTH(' + QUOTENAME(sc.name) + ')) AS UsedLength FROM '[email protected]+ char(10) +' UNION '
FROM sys.columns sc
JOIN sys.types t on t.system_type_id = sc.system_type_id and t.name != 'sysname'
WHERE sc.OBJECT_ID = OBJECT_ID(@TableName)
SET @TSQL = LEFT(@TSQL, LEN(@TSQL)-6)
EXEC(@TSQL)
Здравствуйте, я попытался использовать этот запрос, и у меня появилось сообщение об ошибке: Msg 537, Level 16, State 5, Line 8 Неверный параметр длины передан функции LEFT или SUBSTRING. – user3329160
@ User3329160 Это потому, что вы не указали имя таблицы, для которой вам нужны детали. Обновите «t1» с именем вашей таблицы здесь ** DECLARE TableName sysname = 't1' ** –
Спасибо. Поэтому поле character_maximum length содержит только -1 для всех полей, содержащих символы. (VARCHAR (макс)). Как я могу получить фактическую максимальную длину того, что находится в таблице? – user3329160
Прочтите мое обновление. –
Я ищу динамический способ перечислить каждое имя поля и соответствующую максимальную длину через один запрос. – user3329160