В 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, независимо от длины одного символа:
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() возвращает целочисленное значение для количества символов.