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 длина равна размеру самого поля.

Другие вопросы по тегам