В SQL Server 2005, в чем разница между len() и datalength()?

В чем разница между len() и datalength() в SQL Server 2005?

4 ответа

Решение

DATALEN вернет количество байтов, которые используются для хранения значения:

http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx

LEN вернет количество символов в строке. Поскольку в строке могут использоваться одно- или двухбайтовые символы, это отличается от DATALENGTH тем, что вы всегда получите 1, независимо от длины одного символа:

http://msdn.microsoft.com/en-us/library/ms190329.aspx

DATALENGTH возвращает длину строки в байтах, включая завершающие пробелы. LEN возвращает длину в символах, исключая завершающие пробелы. Например,

ВЫБЕРИТЕ LEN ('string'), LEN ('string'), DATALENGTH ('string'), DATALENGTH ('string'), LEN (N'string '), LEN (N'string'), DATALENGTH (N'string '), DATALENGTH (N'string')

вернется 6, 6, 6, 9, 6, 6, 12, 18

Len () обрежет (удалит завершающие пробелы) из данных.

Функция DataLength() не

Примеры: Выберите Len('Test ') - это вернет 4

Выберите DATALENGTH ("Тест") - это вернет 5

ДАЛЕЕ (собраны из других фантастических и полезных ответов):

DATALENGTH возвращает длину строки в байтах, включая завершающие пробелы http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx

LEN возвращает длину в CHARACTERS, исключая завершающие пробелы http://msdn.microsoft.com/en-us/library/ms190329.aspx

Поскольку строки могут состоять из одного или двух байтов (Unicode), результаты использования любого из них будут различаться в зависимости как от типа данных строки, так и от наличия в ней завершающих пробелов.

Например,

ВЫБЕРИТЕ LEN ('string'), LEN ('string'), DATALENGTH('string'), DATALENGTH('string '), LEN(N'string'), LEN(N'string '), DATALENGTH(N'string'), DATALENGTH(N'string ')

Вернется 6, 6, 6, 7, 6, 6, 12, 14

Что касается строк, datalength() возвращает количество байтов, а len() возвращает целочисленное значение для количества символов.

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