Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 (2005) SELECT len('123 ') почему результат 3?  [new]
Дикий Билл
Member

Откуда:
Сообщений: 9538
SELECT len('123 ')
Почему результат 3?
Как сделать, чтоб возвращала 4?
9 сен 09, 07:16    [7634860]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
LEN - возвращает количество символов (а не количество байтов) указанного строкового выражения, исключая начальные и конечные пробелы.
9 сен 09, 07:31    [7634871]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
SELECT datalength('123 ')
9 сен 09, 07:33    [7634873]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
Дикий Билл
Member

Откуда:
Сообщений: 9538
Спасибо.
Выходит я так ни разу и не прочитал первую строчку в описании функции.
9 сен 09, 07:36    [7634878]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
step_ks
Member

Откуда:
Сообщений: 936
DENIS_CHEL
LEN - возвращает количество символов (а не количество байтов) указанного строкового выражения, исключая начальные и конечные пробелы.

Не вводите людей в заблуждение, начальные учитываются.
9 сен 09, 08:15    [7634903]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
step_ks
DENIS_CHEL
LEN - возвращает количество символов (а не количество байтов) указанного строкового выражения, исключая начальные и конечные пробелы.

Не вводите людей в заблуждение, начальные учитываются.


SELECT len(' ')

?
9 сен 09, 08:20    [7634911]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
step_ks
Member

Откуда:
Сообщений: 936
DENIS_CHEL
step_ks
DENIS_CHEL
LEN - возвращает количество символов (а не количество байтов) указанного строкового выражения, исключая начальные и конечные пробелы.

Не вводите людей в заблуждение, начальные учитываются.


SELECT len(' ')

?

У вас отбросились конечные.
SELECT len(' 123')
?
9 сен 09, 08:22    [7634914]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Вы были бы правы если бы в природе не существовала строк состоящих только из пробелов

PS “возвращает количество символов (а не количество байтов) указанного строкового выражения, исключая начальные и конечные пробелы.” - это вообще-то цитата из творчества мелкомягких по 9-ке...
9 сен 09, 08:39    [7634944]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
step_ks
Member

Откуда:
Сообщений: 936
DENIS_CHEL, не выдумывайте.

LEN (Transact-SQL)
BOL 2005

Returns the number of characters of the specified string expression, excluding trailing blanks.
9 сен 09, 08:46    [7634968]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
step_ks
DENIS_CHEL, не выдумывайте.

LEN (Transact-SQL)
BOL 2005

Returns the number of characters of the specified string expression, excluding trailing blanks.


вот давайте справками не будем меряться)))

Электронная документация по Microsoft SQL Server 2005
© корпорация Майкрософт, 2005.
Все права защищены.


ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ru/tsqlref9/html/fa20fee4-884d-4301-891a-c03e901345ae.htm

LEN (Transact-SQL)

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

PS как быть со строкой из одних пробелов? Вы считаете их все завершающими, да же первый?)))
9 сен 09, 08:58    [7634994]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> вот давайте справками не будем меряться)))

а давайте померяемся:
http://msdn.microsoft.com/ru-ru/library/ms190329(SQL.90).aspx

вы давно BOL в последний раз обновляли?

Posted via ActualForum NNTP Server 1.4

9 сен 09, 09:01    [7635006]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
step_ks
Member

Откуда:
Сообщений: 936
Что-то я не понимаю, зачем вы спорите. select len (' 123') выполняли?
DENIS_CHEL


ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ru/tsqlref9/html/fa20fee4-884d-4301-891a-c03e901345ae.htm

LEN (Transact-SQL)

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

Вам кто-то подделал локальную документацию :)
LEN (Transact-SQL) на русском

DENIS_CHEL

PS как быть со строкой из одних пробелов? Вы считаете их все завершающими, да же первый?)))

Завершающими пустую строку.
9 сен 09, 09:04    [7635018]     Ответить | Цитировать Сообщить модератору
 Re: (2005) SELECT len('123 ') почему результат 3?  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Просто давно не обновлял)))

PS по поводу моего упорства… просто для себя я вот это психологически воспринимаю SELECT len(' ') как 1 начальный и 1 конечный (завершающий)… у каждого свои тараканы)))

PPS а запросы на всякий случай пишу обычно так: смотря, что хочу получить:

SELECT len (' 123 ')

SELECT datalength(' 123 ')

SELECT len(RTRIM(LTRIM(' 123 '))) –хотя здесь избыточно…

SELECT datalength(RTRIM(LTRIM(' 123 ')))
9 сен 09, 09:17    [7635059]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить