Размер строки в SQL Server

добавлено: 08 дек 11
понравилось:0
просмотров: 1930
комментов: 5

теги:

Автор: joyecoder

Задумалась я тут, как измерить размер строки с помощью SQL Server. В любом языке программирования такая задача решается за секунду, а как обстоит дело в t-sql? И оказалось, что с одной стороны все довольно просто - есть замечательная функция LEN, а с другой стороны - в этой простоте скрывается несколько подводных камней и тонкостей. Вот сегодня об этих тонкостях и подводных камнях мне и хотелось бы рассказать.

Читать далее...

Комментарии


  • Попробуйте
    select DATALENGTH('Space ')

    А по поводу len (Null) : Null - Это неопределенное значение. Длина неопределенного значения - значение так же неопределенное :-))
    Поэтому все правильно

  • Ага, спасибо! DATALENGTH действительно работает по-другому, что с одной стороны может быть и правильно, учитывая, что она считает не количество символов, а количество байт. Но с другой стороны, всегда ожидаешь, что поведение системы не меняется от функции к функции, и если где-то пробелы отбрасываются, то все функции будут так делать... А в SQL Server такого нет..

  • Зато в SQL Server есть документация, где все это подробно описано. И кстати, в большинстве случаев (исторически для БД сложилось), концевые пробелы в строках не учитываются.

  • Ну, я бы не сказала, что в документации все хорошо описано, порой она больше путает, чем помогает... И проблема как раз в том, что вот именно "в большинстве случаев" хвостовые пробелы не учитываются, а почему так не происходит всегда, почему было не сделать поведение системы одинаковым во всех случаях?...

  • То, что концевые пробелы в функции LEN не учитываются, написано вполне хорошо. Путаница в документации по SQL Server иногда встречается, но по сравнению с другими широко используемыми продуктами (и не только от MS), это лучшая из виденнывх мной документаций. Более подробную делает разве что IBM, но там из-за подробностей бывает действиетльно путаешься.
    Сделать одинаково везде нереально как минимум, из-за обратной совместимости.



Необходимо войти на сайт, чтобы оставлять комментарии