|
|
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
Кто может объяснить следующую ситуацию : В Таблице А есть поле типа binary длиной 5 Сидит в нем значение 'ТОТ' Выполняю declare @p varchar(100) select @p = cast(vchAddition as varchar(5)) from А where ID_Arm = 7 set @p ='#$$$' + @p+'Go!' print @p Результат '#$$$ТОТ' (куда-то делось 'GO!') А если преобразование будет к varchar(3), то результат правильный, т.е. declare @p varchar(100) select @p = cast(vchAddition as varchar(3)) from A where ID = 7 set @p ='#$$$' + @p+'Go!' print @p Результат '#$$$ТОТGO!' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 14:11:18 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
Дело в trailing nulls. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 14:39:31 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
Прошу игнорировать предыдущий кусок кода - это баг ПО форума... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 14:45:04 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
Как же мне слепить строчку, если в поле может быть слово из неизвестного числа символов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 15:55:29 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
2kimkov Вы тут написали: declare @p varchar(100) select @p = cast(vchAddition as varchar(5)) from А where ID_Arm = 7 set @p ='#$$$' + @p+'Go!' print @p Результат '#$$$ТОТ' (куда-то делось 'GO!') На самом деле результат будет '#$$$ТОТооGo!', где оо - это два байта 0. Это просто ваше клиентское приложение (наверное QA) не показывает всю строку. Так что всё правильно работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 16:30:01 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
2kimkov: Если не секрет - зачем хранить строки как binary? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 16:48:03 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
2jimmers это просто эксперименты разного рода. А вообще то пытаюсь понять, как можно скрывать информацию. К примеру ,нужно хранить какое-то ключевое слово(типа пароля), которое не каждому дано видеть. Если знаете, подскажите! Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2002, 17:51:43 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
> К примеру ,нужно хранить какое-то ключевое слово(типа пароля), Эта задача решаеться просто: select pwdencrypt('123') select pwdcompare('123',pwdencrypt('123')) Note: Функции недокументированные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 03:27:49 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
Спасибо. Очень помогли! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:29:50 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
2 alexeyvg и все же это не приложение виновато. например следующий кусок не срабатывает update A set vchAddition = cast((cast(vchAddition as varchar(5)) + 'hhh') as binary) from A where ID_A = 100 в vchAddition по-прежнему остается 'ТОТ' Что-то не воспринимаются последние нули.Если использовать varchar(3), то все работает, но в моем случае это не годится. ПРОСВЯТИТЕ!! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 14:59:53 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
ну и используй varbinary..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 16:02:02 |
|
||
|
Данные типа BINARY
|
|||
|---|---|---|---|
|
#18+
2kimkov ПРОСВЯЩАЮ. Из чего следует, что в vchAddition по-прежнему остается 'ТОТ'??? Посмотреть можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Причина ошибки-то очевидна! У Вас есть поле типа binary(5). Байтовая строка в этом поле ВСЕГДА имеет длинну 5 байтов. 3 или даже 4 байта туда записать НЕЛЬЗЯ. Соответственно, значение 'ТОТ' в нём записано быть НЕ МОЖЕТ. Только 'ТОТоо', где оо - 2 байта со значениями 0 или пробел. И, соответственно, 'ТОТоо' + 'hhh' --> 'ТОТооhhh', далее при обновлении vchAddition обрезается до 'ТОТоо' (т.к. длинна - 5 байтов). При этом, кстати, должна появляться ошибка 8152 (но это зависит от установок коннекта) А вообще-то надо правильно выбирать типы данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2002, 16:45:14 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1819623]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 332ms |

| 0 / 0 |
