Len () по сравнению с datalength () в SQL Server 2005

Я действительно склонен использовать статические классы для фабрик. Например, это - регистрирующийся класс в одном из моих проектов:

public static class Log
{
   private static readonly ILoggerFactory _loggerFactory =
      IoC.Resolve<ILoggerFactory>();

   public static ILogger For<T>(T instance)
   {
      return For(typeof(T));
   }

   public static ILogger For(Type type)
   {
      return _loggerFactory.GetLoggerFor(type);
   }
}

Вы, возможно, даже заметили, что МОК называют со статическим средством доступа. Большинство из времени для меня, если можно назвать статические методы для класса, это - все, что можно сделать так, я отмечаю класс как статичный для дополнительной ясности.

32
задан Dale K 29 April 2019 в 04:54
поделиться

3 ответа

Да, это именно то, что вы должны сделать. Если вы хотите просто получить количество символов без пробелов, вы должны использовать функцию LEN () , а во всех остальных случаях DATALENGTH () .

Even LEN () В документации есть информация о том, что для получения количества байтов для представления расширения вы должны использовать DATALENGTH ()

Вот ссылки на документы MSDN:

LEN ()

DATALENGTH ()

21
ответ дан 27 November 2019 в 20:20
поделиться

Будьте осторожны. DATALENGTH возвращает количество использованных байтов, а не количество символов.

36
ответ дан 27 November 2019 в 20:20
поделиться

len подсчитывает количество используемых символов, а не необходимое хранилище, это станет еще более очевидным, если вы используете nvarchar вместо varchar

len также не считает конечные пробелы

, посмотрите на это

declare @v nchar(5)
select @v ='ABC  '


select len(@v),datalength(@v)

и вывод для len - 3, а вывод для datalength = 10

11
ответ дан 27 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: