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