странность логики при update

Lepsik
Дата: 16.10.2003 12:12:43
есть строковое поле с размером картинки varchar(20)
с содержимым типа '200x300'

и есть поле orientation smallint куда запросами надо положить 1, 2, 4 в зависимости от ориентации картинки

запросы типа
UPDATE picture SET orientation=4 WHERE psize IS NOT NULL AND CHARINDEX('x', psize) > 0 AND (CONVERT(decimal(5,0), RIGHT(psize, LEN(psize)-CHARINDEX('x', psize))) > CONVERT(decimal(5,0), LEFT(psize, CHARINDEX('x', psize)-1)))

с < или > работают четко, в вот там где я пытаюсь сравнить одинаковые ли стороны у картинки - выдает

Server: Msg 8114, Level 16, State 5, Line 3
Error converting data type nvarchar to numeric.

хотя SELECT psize FROM picture WHERE psize IS NOT NULL AND CHARINDEX('x', psize) > 0 AND (CONVERT(decimal(5,0), RIGHT(psize, LEN(psize)-CHARINDEX('x', psize))) = CONVERT(decimal(5,0), LEFT(psize, CHARINDEX('x', psize)-1)))

работает без ошибок . :((

вот засада. в чеm отличие UPDATE от SELECT в таком случае ?
Павел Воронцов
Дата: 16.10.2003 13:07:58
Нормализуйте свою структру и не мучайтесь. Надо Вам хранить высоту и ширину - ну так и храните их в отдельных атрибутах, а при выводе конкатенируйте в нужном порядке (в зависимости от ориентации..
Павел Воронцов
Дата: 16.10.2003 13:21:44
Кстати - убедитесь, что у вас там где-нибудь буква 'O' (char(79)) вместо '0' (char(48))
Павел Воронцов
Дата: 16.10.2003 13:22:08
.... не затесалась
Lepsik
Дата: 17.10.2003 17:20:17
--Кстати - убедитесь, что у вас там где-нибудь буква 'O' (char(79)) вместо '0' (char(48))

я же ясно написал, что условие в WHERE работает правильно но только в SELECT.

А в UPDATE выдает ошибку