Хотя обычно важно попытаться сделать как можно больше в одном операторе SQL (чтобы помочь оптимизатору для приложений OLTP и т. Д.), Похоже, что это сценарий повреждения данных, поэтому я предполагаю, что одноразовая очистка данных - это все это требуется. И если учесть, что есть только два случая («однозначные или двузначные значения»), нет никакого реального вреда в использовании двух операторов UPDATE
, например.
UPDATE Test1
SET text_col = '0' + text_col
WHERE text_col ALIKE '[0-9][0-9]';
UPDATE Test1
SET text_col = '00' + text_col
WHERE text_col ALIKE '[0-9]';
ОДНАКО, наиболее важной частью упражнения является применение ограничений данных, чтобы гарантировать, что повреждение данных не повторяется, например. (Синтаксис режима SQL ANSI-92):
ALTER TABLE Test1 ADD
CONSTRAINT text_col__numeric__at_least_three_digits
CHECK (
text_col NOT ALIKE '[0-9]'
AND text_col NOT ALIKE '[0-9][0-9]'
);