- 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 (!!!) таких запросов, и каждый не менее эпичный )) Хотел исправить это хозяйство одним более-менее цивильным запросом, но где-то на половине у меня руки опустились
santa_microbe 21.11.2011 16:31 # +1
А еще вопрос, ради себя интересуюсь, для расширения кругозора, ваш вариант запроса, у меня есть собственные предположения, но хотел посмотреть как правильно
bugmenot 22.11.2011 21:36 # 0
такие вообще бывают?
guest 22.11.2011 21:57 # 0
bugmenot 23.11.2011 00:08 # 0
Lure Of Chaos 24.11.2011 21:22 # 0
guest 22.11.2011 21:59 # 0
santa_microbe 23.11.2011 07:18 # +1
santa_microbe 21.11.2011 17:00 # +1
spray07 21.11.2011 21:46 # 0
На счет пробела в центре я даже не заметил)) Да, их тоже быть не должно :D
lucidfoxGovno 21.11.2011 17:45 # −1
TheHamstertamer 21.11.2011 20:35 # +2
Напомнило:
and i'm like baby, baby, baby, oohhh
Lure Of Chaos 21.11.2011 21:12 # +2
akaDElpher 22.11.2011 04:31 # +3
http://tomsk.fm/watch/164947
spray07 21.11.2011 22:02 # 0
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 таких проверок еще
eth0 22.11.2011 17:49 # 0
guest 22.11.2011 03:16 # 0
spray07 22.11.2011 08:15 # 0
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;
Вот исходный вариант (второй запрос аналогично). Сейчас опять читаю и не могу вкурить зачем там этот джойн
scriptin 22.11.2011 22:39 # 0
jabber 22.11.2011 23:53 # 0
Desktop 05.09.2023 18:42 # 0
govnoguest 24.11.2011 04:07 # 0
>error
>cod
>>>!!!РЫБНАЯ ОШИБКА!!!<<<
TarasGovno 24.11.2011 04:58 # 0
Desktop 05.09.2023 18:41 # 0
guest6 05.09.2023 18:43 # 0
Почему не нанять программиста, и пускай у него голова болит