Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Странность len  [new]
len2
Guest
Уважаемые гуру, запрос
select len('`1m$fm#T#/>tH*:c|in>JAiW]_#oMgK`!~:#us2WFu7D_Xhi9KYGQE2-,uz-

)KE"L_9*HB7*`@L.q7P')

выдает 85, но невооруженным взглядом видно, что символов там 83 (что собственно и показывает делфевая функция Length). Такое ощущение, что символы переноса строки считаются за 2, не находите? Эта грабля документирована где-то?
9 апр 14, 09:58    [15854020]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
len2
Guest
Для тех, кому лень считать, вот более наглядный вариант
select len('

')

возвращает 4, хотя на самом деле 2
9 апр 14, 10:05    [15854062]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
len2
Такое ощущение, что символы переноса строки считаются за 2, не находите? Эта грабля документирована где-то?

http://ru.wikipedia.org/wiki/Перевод_строки#.D0.92_ASCII
9 апр 14, 10:06    [15854064]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
select CONVERT(VARBINARY(85),'`1m$fm#T#/>tH*:c|in>JAiW]_#oMgK`!~:#us2WFu7D_Xhi9KYGQE2-,uz-

)KE"L_9*HB7*`@L.q7P')
Обратите внимание на 61-й символ:
select SUBSTRING(CONVERT(VARBINARY(85),'`1m$fm#T#/>tH*:c|in>JAiW]_#oMgK`!~:#us2WFu7D_Xhi9KYGQE2-,uz-

)KE"L_9*HB7*`@L.q7P'),61,24)
0x0D - "Carriage Return", 0x0A - "Line Feed"
9 апр 14, 10:10    [15854101]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
0x0D - "Carriage Return", 0x0A - "Line Feed"
Эта пара символов - один из стандартов для перевода строки.
Так исторически когда-то сложилось у некоторых типов принтеров.
9 апр 14, 10:12    [15854118]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
len2
Guest
iap,
спасибо, значит chr(13) туда откуда-то попадает.
просто из делфи эта строка идет как
`1m$fm#T#/>tH*:c|in>JAiW]_#oMgK`!~:#us2WFu7D_Xhi9KYGQE2-,uz-'#$A#$A#$7F')KE"L'#$7F'_9*HB7*`@L.q7P

(то бишь #$D я в ней не наблюдаю). Но она каким-то каком туда попадает. Спасибо всем, буду смотреть откуда и почему.
9 апр 14, 10:18    [15854156]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
len2
Для тех, кому лень считать, вот более наглядный вариант
select len('

')

возвращает 4, хотя на самом деле 2
2 перевода строки, каждый по 2 символа.
len2
спасибо, значит chr(13) туда откуда-то попадает.
Из текстового редактора, которым вы сделали этот текст.
9 апр 14, 10:58    [15854476]     Ответить | Цитировать Сообщить модератору
 Re: Странность len  [new]
len2
Guest
alexeyvg,

дело было в дельфе, точнее в TWideStrings. При присвоении SQL.Text := строка содержащая chr(10) срабатывает SQL.Add(часть до chr(10)), потом добавляется пустая строка, соответственно появляется chr(13).
Спасибо iap, научил меня делать дамп в MS.
9 апр 14, 14:07    [15855968]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить