регулярные выражения внутри оператора SQL IF - PullRequest
1 голос
/ 08 мая 2011

Я знаю, что могу создать базовые триггеры сравнения (см. Ниже)

CREATE TRIGGER HospitalCheck
BEFORE INSERT ON Hospital
FOR EACH ROW
 BEGIN
  IF NEW.HospitalID > 9999 THEN
     call fail('HOSPITAL CODE INVALID');
  END IF;    
END

Как мне использовать регулярное выражение, которое допускает только числа? (вместо> 9999) (эквивалент строки SELECT для проверки REGEXP '^ [0-9] + $')

Я пытался:

IF NEW.HospitalID REGEX '^[0-9]+$' THEN 
  call fail('HOSPITAL CODE INVALID'); 
END IF;

Но я получаю

: ОШИБКА: -> # 1064 - в вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'REGEX' ^ [0-9] + $ 'THEN call fail (' HOSPITAL CODE INVALID '); END IF 'в строке 5

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

ЕСЛИ НЕ column_name REGEXP '^ [0-9] + $' THEN

0 голосов
/ 08 мая 2011

NOT_REGEXP функция - см. Документы http://dev.mysql.com/doc/refman/5.1/en/regexp.html

IF colname NOT_REGEXP '^[0-9]+$' THEN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...