Проверить формат varchar. my SQL
Привет помогите пож. закончить функцию. (С. ниже)
Чем проверить Номер Рейса (Варчар)? Он может быть мин. 3 и мах. 8 знаков. Я уже это проверерила в Функции.
drop function if exists validate_flight_number;
DELIMITER $$
CREATE FUNCTION validate_flight_number (fln varchar(8))RETURNS int
BEGIN DECLARE result_c int;
IF char_length(fln) >= 3
and char_length(fln) <= 8
and ??????????
THEN SET result_c = 1;
ELSE set result_c = 0 ;
END IF;
RETURN result_c;
END$$
DELIMITER ;
Но не могу придумать как проверить следующие условия (вместо ?????????):
Эта сволочь не работает как надо((((((((
{}
x{n}
and x{m,n}
This notation is used to match many instances of the x
. In the case of x{n}
the match must be exactly that many times. In the case of x{m,n}
, the match can occur from m
to n
times. For example, to match zero or one instance of the string ari
(which is identical to (ari)?
), the following can be used:
SELECT 'Maria' REGEXP '(ari){0,1}'; +-----------------------------+ | 'Maria' REGEXP '(ari){0,1}' | +-----------------------------+ | 1 | +-----------------------------+
Почему вы так думаете? Вы выполнили SELECT 'Maria' REGEXP '(ari){0,1}'
Какой результат вы ожидали увидеть?
'Maria' это просто пример из сети. Но если применить только этот синтакс на номер рейса, то не работает:
fln regexp '[a-zA-Z0-9]{1}[a-zA-Z0-9]{1}[a-zA-Z]{0,1}[0-9]{1}[0-9]{0,1}[0-9]{0,1}[0-9]{0,1}[a-zA-Z]{0,1}'
ИЗ задания: xx(a)n(n)(n)(n)(a)
x : (a-zA-Z0-9) --> [a-zA-Z0-9]{1}
x: (a-zA-Z0-9) --> [a-zA-Z0-9]{1}
(a): (a-zA-Z)--> [a-zA-Z]{0,1}
n: (0-9)-->[0-9]{1}
(n):(0-9)-->[0-9]{0,1}
(n):(0-9)-->[0-9]{0,1}
(n):(0-9)-->[0-9]{0,1}
(a): (a-zA-Z)--> [a-zA-Z]{0,1}
Мне нужно что то найти, что б с интексом работало (как индекс в стринге/списке).
^
Match the beginning of a string
$
Match the end of a string.
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp...
я думаю это не поможет. regexp видит мой стринг как салат и говорит есть ли в нем например огурцы или помидоры. Если там еще носки в салате ему все равно. А мне нужно чтоб он полку видел, где слева на право лежит огурец, огурец, помидор и т.д.
'Maria' это просто пример из сети. Но если применить только этот синтакс на номер рейса, то не работает:
fln regexp '[a-zA-Z0-9]{1}[a-zA-Z0-9]{1}[a-zA-Z]{0,1}[0-9]{1}[0-9]{0,1}[0-9]{0,1}[0-9]{0,1}[a-zA-Z]{0,1}'
"Оно не работает" слишком старая шутка. Не смешно.
Что именно "не работает"? Не возвращает 1 для АА0 или не возвращает 0 для 123BBB? Пример данных дайте, с которыми у вас "не работает".
И исправьте выражение как вам выше предложили, сделайте покороче.
А мне нужно чтоб он полку видел, где слева на право лежит огурец, огурец, помидор и т.д.
Try "substring":