- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
UPDATE zayavlenie_tmp
SET error = 1,
errorcod = 4
FROM zayavlenie_tmp
WHERE zayavlenie_tmp.error IS NULL
AND (rtrim(fam) = ''
OR LEN(ltrim(rtrim(fam))) < 2
OR fam LIKE '%0%'
OR fam LIKE '%1%'
OR fam LIKE '%2%'
OR fam LIKE '%3%'
OR fam LIKE '%4%'
OR fam LIKE '%5%'
OR fam LIKE '%6%'
OR fam LIKE '%7%'
OR fam LIKE '%8%'
OR fam LIKE '%9%'
UPDATE zayavlenie_tmp
SET error = 1,
errorcod = 5
FROM zayavlenie_tmp
WHERE zayavlenie_tmp.error IS NULL
AND (rtrim(im) = ''
OR LEN(ltrim(rtrim(im))) < 2
OR im LIKE '%0%'
OR im LIKE '%1%'
OR im LIKE '%2%'
OR im LIKE '%3%'
OR im LIKE '%4%'
OR im LIKE '%5%'
OR im LIKE '%6%'
OR im LIKE '%7%'
OR im LIKE '%8%'
OR im LIKE '%9%'
При импорте поля проверяются на соответствие (около 30 разнобразных правил). Хранимику писал мой начальнег :) Выкладываю УЖЕ немного исправленный для удобопонимания вариант, в исходнике таблицы еще зачем-то джойнились сами на себя. Всего в хранимике 50 (!!!) таких запросов, и каждый не менее эпичный )) Хотел исправить это хозяйство одним более-менее цивильным запросом, но где-то на половине у меня руки опустились
А еще вопрос, ради себя интересуюсь, для расширения кругозора, ваш вариант запроса, у меня есть собственные предположения, но хотел посмотреть как правильно
такие вообще бывают?
На счет пробела в центре я даже не заметил)) Да, их тоже быть не должно :D
Напомнило:
and i'm like baby, baby, baby, oohhh
http://tomsk.fm/watch/164947
UPDATE zayavlenie_tmp
SET errorcod = CASE
WHEN ltrim(rtrim(fam)) LIKE '%[0-9]%' OR LEN(ltrim(rtrim(fam))) < 2 THEN 5
WHEN ltrim(rtrim(im)) LIKE '%[0-9]%' OR LEN(ltrim(rtrim(im))) < 2 THEN 4 ELSE NULL END;
update zayavlenie_tmp
set error = 1 where errorkod is not null;
*результат этих запросов может отличаться - там присвоит первый код ошибки тут последний , но не суть важно в моем случае. и повторюсь там ~50 таких проверок еще
SET error = 1,
errorcod = 4
FROM zayavlenie_tmp
LEFT OUTER JOIN
(SELECT id
FROM zayavlenie_tmp
WHERE zayavlenie_tmp.flk IS NULL
AND (rtrim(fam) = ''
OR LEN(ltrim(rtrim(fam))) < 2
OR fam LIKE '%0%'
OR fam LIKE '%1%'
OR fam LIKE '%2%'
OR fam LIKE '%3%'
OR fam LIKE '%4%'
OR fam LIKE '%5%'
OR fam LIKE '%6%'
OR fam LIKE '%7%'
OR fam LIKE '%8%'
OR fam LIKE '%9%')) AS flk
ON zayavlenie_tmp.id = flk.id
WHERE flk.id IS NOT NULL;
Вот исходный вариант (второй запрос аналогично). Сейчас опять читаю и не могу вкурить зачем там этот джойн
>error
>cod
>>>!!!РЫБНАЯ ОШИБКА!!!<<<
Почему не нанять программиста, и пускай у него голова болит