varChar и Char ведут себя по-разному на броске - PullRequest
2 голосов
/ 05 октября 2010

Почему вывод отличается от этого запроса

SELECT DATALENGTH(CAST('test' AS VARCHAR)), DATALENGTH(CAST('test' AS CHAR))

Выход:

4,30

Ответы [ 2 ]

4 голосов
/ 05 октября 2010

VarChar всегда подстраивается под длину передаваемой строки. следовательно, вывод равен 4.

CHAR имеет длину по умолчанию 30 и, следовательно, выходное значение равно 30.

1 голос
/ 05 октября 2010

Потому что "Если n не указано при использовании функций CAST и CONVERT, длина по умолчанию составляет 30 ". Но когда DataLength применяется к полю varchar, он игнорирует завершающие пробелы, в то время как для поля char длина равна размеру самого поля.

...