В чем разница между len() и datalength() в SQL Server 2005?
-
05-09-2019 - |
Вопрос
В чем разница между len() и datalength() в SQL Server 2005?
Решение
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 ('test') - это вернет 5
ДАЛЬШЕ (агрегировано из других фантастических и полезных ответов):
DATALENGTH возвращает длину строки в БАЙТАХ, включая конечные пробелы.http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx
LEN возвращает длину в СИМВОЛАХ, исключая конечные пробелы.http://msdn.microsoft.com/en-us/library/ms190329.aspx
Поскольку строки могут состоять из одного или двух байтов (Юникод), результаты использования любого из них будут различаться в зависимости как от типа данных строки, так и от того, есть ли в строке конечные пробелы.
Например,
Выберите 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() возвращает целочисленное значение количества символов.