Sql Server Игнорировать ошибки обновления - PullRequest
1 голос
/ 15 января 2009

Я унаследовал очень старую базу данных, которая нуждается в обновлении некоторых данных. В каждой строке есть столбец с уникальным идентификатором, который выглядит как C0042-45-39612. Последние 3 цифры кода являются категорией Id (в данном случае 612).

Мне нужно сделать обновление, предназначенное только для определенных категорий, и я использую этот оператор SQL

UPDATE WebbikesProducts SET Price = Price * 1.05 WHERE Convert( Integer, SubString( UniqueID, 3, 3 )) = 125

Очевидная проблема здесь в том, что если уникальный код не имеет 3 числа в конце? Ну, это именно та проблема, которая у меня есть, так как не все элементы классифицированы или имеют уникальные номера, например C0049-307-1CHROME

У меня нет доступа к БД (я вызываю это со страницы asp), поэтому я бы предпочел не создавать хранимую процедуру. БД SQL 2000.

Есть ли способ игнорировать строки с ошибками и продолжать обновлять другие строки?

Ответы [ 2 ]

1 голос
/ 15 января 2009

Попробуйте это:

UPDATE WebbikesProducts 
SET Price = Price * 1.05 
WHERE ISNUMERIC(SubString( UniqueID, 3, 3 )) = 1
AND Convert( Integer, SubString( UniqueID, 3, 3 )) = 125

или даже более просто:

UPDATE WebbikesProducts 
SET Price = Price * 1.05 
WHERE SubString( UniqueID, 3, 3 ) = '125'

-Edo

1 голос
/ 15 января 2009

Я не уверен, почему вы не хотите конвертировать в int. Почему бы просто не сравнить строки для последних трех цифр. Также вы делаете - подстрока (id, 3, 3).

Я полагаю, вы упростили приведенный выше фрагмент кода, чтобы его было легче читать, и что вы уже извлекаете 39612 вначале?

Я бы предложил следующее:

where UniqueID like '%612'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...