Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Доброго времени суток.

Со скулём дружу плохо, гугл с аськой не помогли, поэтому прошу помощи тут.

Есть три вьюхи:

TV1
id (varbinary(16)) name (varchar(32))

TV2
id (varbinary(16)) name (varchar(32))

TV3
id1 (varbinary(16)) id2 (varbinary(16)) flag (bit)


Мне известно TV1.name, по нему нужно получить TV3.flag
Делаю так:

select *
from TV1 t1 join TV3 t3 on t1.id = t3.id1
where t1.name = 'blahblahblah'

Успешно получаю нужный мне результат и радуюсь жизни.

Но если сделать
select *
from TV1
where name = 'blahblahblah'
скопировать полученный айдишник (0xA6B50019BB2BE84811DD9056FBAA87C2)
и затем сделать
select *
from TV3
where id1 = 0xA6B50019BB2BE84811DD9056FBAA87C2

то получаю ошибку
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to varbinary.


пробовал делать
convert(varbinary(16), id1) = 0xA6B50019BB2BE84811DD9056FBAA87C2 - не помогает

пробовал конвертить и то и то в varchar(32) - эффекта так же никакого

В чём дело - не понимаю :(
7 сен 11, 16:54    [11242575]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
convert ( varchar, 0xA6B50019BB2BE84811DD9056FBAA87C2, 1 )
7 сен 11, 16:56    [11242591]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Хотя вы что-то не договариваете, т.к. у вас TV3.d1 имеет тип varbinary (16)
7 сен 11, 16:57    [11242607]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Гавриленко Сергей Алексеевич
convert ( varchar, 0xA6B50019BB2BE84811DD9056FBAA87C2, 1 )

select *
from TV3
where id1 = convert (varchar, 0xA6B50019BB2BE84811DD9056FBAA87C2, 1)
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to varbinary.


Не помогает :(
7 сен 11, 16:58    [11242621]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Гавриленко Сергей Алексеевич
Хотя вы что-то не договариваете, т.к. у вас TV3.d1 имеет тип varbinary (16)

В том-то и дело, что по идее никаких конвертаций быть не должно. Да и джойн успешно выцепляет нужную строку.
7 сен 11, 16:59    [11242626]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
brbrbr
Не помогает :(

Значит вы нам что-то не то наговорили.
set nocount on

declare @t3 table (
    id1     varbinary(16)
    , id2   varbinary(16)	
    , flag  bit
)
insert @t3 (
    id1
)
select 0xA6B50019BB2BE84811DD9056FBAA87C2

select 
    *
from    @t3 
where
    id1 = 0xA6B50019BB2BE84811DD9056FBAA87C2

id1                                id2                                flag
---------------------------------- ---------------------------------- -----
0xA6B50019BB2BE84811DD9056FBAA87C2 NULL                               NULL
7 сен 11, 17:00    [11242641]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Скрипт вашей таблицы T3 показывайте, а не то, что вы в первоначальном посте привели.
7 сен 11, 17:01    [11242655]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Гавриленко Сергей Алексеевич
Скрипт вашей таблицы T3 показывайте, а не то, что вы в первоначальном посте привели.


SELECT     CONVERT(binary(16), es.id, 1) AS id1, CONVERT(binary(16), cs.code, 1) AS id2, er.flag AS flag
FROM         t1 es
    INNER JOIN t2 cs ON ...
    INNER JOIN t3 er ON...
7 сен 11, 17:11    [11242754]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
brbrbr
Гавриленко Сергей Алексеевич
Скрипт вашей таблицы T3 показывайте, а не то, что вы в первоначальном посте привели.


SELECT     CONVERT(binary(16), es.id, 1) AS id1, CONVERT(binary(16), cs.code, 1) AS id2, er.flag AS flag
FROM         t1 es
    INNER JOIN t2 cs ON ...
    INNER JOIN t3 er ON...
Это не скрипт таблицы.
7 сен 11, 17:16    [11242807]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А, это вьюха
7 сен 11, 17:16    [11242815]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Гавриленко Сергей Алексеевич
А, это вьюха

Да, вьюха.
7 сен 11, 17:17    [11242821]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Значит у вас не все значения из es.id и cs.code могут быть преобразованы в varbinary, а фильтрация идет после преобразования в плане.

Плохие у вас вьюхи, в общем.
7 сен 11, 17:18    [11242838]     Ответить | Цитировать Сообщить модератору
 Re: Error converting data type varchar to varbinary  [new]
brbrbr
Member

Откуда: дровишки?
Сообщений: 6067
Гавриленко Сергей Алексеевич
Значит у вас не все значения из es.id и cs.code могут быть преобразованы в varbinary, а фильтрация идет после преобразования в плане.

Плохие у вас вьюхи, в общем.

Понял, буду ковырять в этом направлении.
Просто очень сильно смутило, что
select *
from TV1
where id = 0xA6B50019BB2BE84811DD9056FBAA87C2
работает, а такая же конструкция с вьюхой TV3 - нет.

Спасибо!
7 сен 11, 17:22    [11242873]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить