Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
o-o
Guest |
мне сегодня впервые довелось посмотреть на динозаврика -- подарили табличку с полем типа image. хотят из этого получить символьное представление, вот просто тупо конвертировать в varchar(max). какие-то строки сконвертировались (с предварительной конвертацией в varbinary(max)), и все ок, а какие-то в пустоту превратились. что у них другого, у несконвертированных? лидирующие нули. т.е. вот такое: 0x0205785E7D51D14E833014F5534C конвертируется, а вот такое выдает пустоту: 0x00205785E7D51D14E833014F5534C (на 1 лидирующий 0 больше) select cast (0x0205785E7D51D14E833014F5534C as varchar(200)) as with_0, cast (0x00205785E7D51D14E833014F5534C as varchar(200)) as with_00 ----------------------------- with_0 with_00 x^}QÑNƒ0õSL 2 вопроса: 1. почему 2 и более нулей в начале мешают всему остальному сконвертироваться 2. как бы эти нули порезать? т.е. просто я вообще не знаю, какие операции имеются над image (ну или над varbinary) |
21 мар 14, 19:22 [15768617] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
2. над varbinary можно производить операцию REPLACE |
||||
21 мар 14, 19:29 [15768640] Ответить | Цитировать Сообщить модератору |
varbinary
Guest |
во второй строке нечетное кол-во цифорок, пол байта храните? у вас в начале строки 0x00 символ, он скорее всего строку и "ломает" |
||
21 мар 14, 19:33 [15768671] Ответить | Цитировать Сообщить модератору |
varbinary
Guest |
REPLACE работает со строками и вызывает неявную конвертацию, смотрите план [url=]declare @t table (a varbinary(100)) insert @t (a) select 0x0002 select REPLACE(a, 0x0002, 0x02) from @t[/url] а вот substring работает с байтами [url=]declare @t table (a varbinary(100)) insert @t (a) select 0x0002 select SUBSTRING(a, 1, 1) from @t[/url] |
||
21 мар 14, 19:41 [15768723] Ответить | Цитировать Сообщить модератору |
varbinary
Guest |
мимо тега промахнулся |
||||
21 мар 14, 19:42 [15768730] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
динозаврик: мне казалось, что image-и это пережитки 2000-ого :) >>>Конвертация из varbinary(max) и image абсолютно одинакова да прям. напрямую из image выдает ошибку: Explicit conversion from data type image to varchar(max) is not allowed а напрямую из varbinary -- конвертирует, не пикнув ок, им надо не просто "сконвертировать", а чтобы "студия показала", т.е. нули придется порезать (а какие проблемы с нулями-то? вроде ж как берет по 2 цифры и тупо их в символ переводит. ну и если несколько первых "непечатные", то остальные почему не выводит?) за REPLACE спасибо |
21 мар 14, 19:43 [15768731] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
обе строки обрезанные. в форум целиком имеющееся закопировать -- это зачем бы? ну, замените на вот такое: select cast (0x0205785E7D51D14E833014F5534C as varchar(200)) as with_0, cast (0x000205785E7D51D14E833014F5534C as varchar(200)) as with_00
вот это и хотелось понять. в целях расширения кругозора, не более :) не подскажете, почему "ломает"? |
||||
21 мар 14, 19:49 [15768750] Ответить | Цитировать Сообщить модератору |
varbinary
Guest |
я думаю by design |
||||||
21 мар 14, 20:00 [15768795] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
o-o, Переключите студию на текстовое представление результата |
21 мар 14, 20:32 [15768896] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
Или такselect cast(0x0205785E7D51D14E833014F5534C as varchar(200)) as with_0, replace(cast(0x000205785E7D51D14E833014F5534C as varchar(200)), char(0), '') as with_00 |
21 мар 14, 20:33 [15768904] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Просто оно на С написано, и где то случайно вкорячили какую нибуть сишную строковую функцию, которая естественно 0 воспринимает как конец строки. Править никто не будет, потому что проблема не сказывается на бизнесе.
|
||||||||
21 мар 14, 22:43 [15769327] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
спасибо всем!!! уже REPLACE-ом решилось, но сколько всего нового :) а мне EM не довелось увидеть, я в теме "недавно" to alexeyvg: да мне как бы с самого начала понятно было, что все одна байда image <-> binary, что и отражено в самом названии топика :) просто ну мало-ли, вдруг были какие-то функции-атавизмы для работы с image, к-ые канули в лету с появлением varbinary(max), думаю, укажу все, как есть, мало-ли. в интернете-то хэлп от 2000 уж и не выпадает, сразу дают 2012 и спасибо, что есть 2008 и 2005. |
22 мар 14, 00:06 [15769702] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Версии ранее 2000 действительно нет, увы :-( |
||
22 мар 14, 01:41 [15769981] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
alexeyvg, у меня знаете, что делает в последнее время? вообще, зараза такая, не дает язык сменить. какой-то странный msdn вываливается, завешиваю картинку. ткните мне, ну вот ГДЕ тут смена языка? т.е. дома еще ладно, цивильный браузер и цивильный язык. а на работе, простите, все установлено на непотребном языке и хэлп на нем же и вываливается. мне уже просто невозможно ссылки людям давать! вот, помню, про CTE мне выдался сегодня msdn нового образца. демонстрирую. кстати, вот ведь дома чистейший en-us...а все равно версии дает 2005-2012 К сообщению приложен файл. Размер - 54Kb |
22 мар 14, 02:12 [15770016] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
не, ну что про CTE нет и не могло быть в 2000, это норм :) ...но про смену языка...куда дели? ведь была раньше удобная кликалка в правом верхнем углу |
22 мар 14, 02:33 [15770049] Ответить | Цитировать Сообщить модератору |
mimohod765478
Guest |
http://technet.microsoft.com/en-us/library/ms187745.aspx В ссылке просто меняем en-us на ru-ru :-) http://technet.microsoft.com/ru-ru/library/ms187745.aspx |
22 мар 14, 09:09 [15770326] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
ну т.е. ручками. я так и делаю, чтоб на форуме постить ссылки. это, видимо, новая политика такая, попытка отучить от мышкакликанья ![]() |
22 мар 14, 10:04 [15770374] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Раньше было... Я не понимаю, они дают задания "ухудшить MSDN", и планомерно ухудшают???
|
||||
22 мар 14, 12:15 [15770526] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
char(0) - это окончание строки в C. select 'бла-бла'+CHAR(0)+'бла-бла' Вангую, MS SQL на Си написан. |
||
22 мар 14, 12:34 [15770579] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Да и не факт, что это MS SQL виноватый - может и клиент резать... |
22 мар 14, 12:50 [15770610] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Это видно из того, что в SSMS при переключении отображения в "текст" не режет. |
||
22 мар 14, 15:13 [15770865] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Создаёте Буркмарк на панели:
Ну там естественно свой поисковик для msdn, чтобы сразу нужное найти и не копаться в гугловском говне. У меня даже меню выбора версии сервера не работает. Да и вообще по сходили с ума, все им кукисы подавай, словно они необходимы для нормальной работы. |
||||
23 мар 14, 00:57 [15772607] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
не знаю, кто посходил с ума, но мне хэлп продукта нормальнее всего читать в оригинале. а что оно настырно считывает язык браузера и мне на нем подсовывает, это безобразие. ненавижу переведенное. извращаться должен тот, кто желает переведенное. а оригинальный хэлп должен выпадать без всяких телодвижений. IMHO |
23 мар 14, 02:41 [15772752] Ответить | Цитировать Сообщить модератору |
Ruuu Member Откуда: Иркутск Сообщений: 4272 |
Но выбор языка у них и без этого был неудобный. Я просто в строке адреса исправлял "ru-ru" на "en-us". |
||
24 мар 14, 07:13 [15775219] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
А я ведь искал внизу, была мысль, что перенесли. Я тоже всегда менял ссылку, этот выбор в последнее время совсем уродский, с отдельной страницей. Вообще конечно нужно сделать выбор родного языка, и переключатель - родной и английский. Потому что английский - нативный язык для документации, и многим нужно переключаться туда-сюда, если используется не только английский. |
||
24 мар 14, 09:17 [15775423] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |