Почему вывод отличается от этого запроса
SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR))
Выход:
4,30
VarChar всегда подстраивается под длину передаваемой строки. следовательно, вывод равен 4.
CHAR имеет длину по умолчанию 30 и, следовательно, выходное значение равно 30.
Потому что "Если n не указано при использовании функций CAST и CONVERT, длина по умолчанию составляет 30 ". Но когда DataLength применяется к полю varchar, он игнорирует завершающие пробелы, в то время как для поля char длина равна размеру самого поля.