Проверить формат varchar. my SQL
Что есть, то есть. Но ситуация еще хуже...Теперь правда мне стыдно. Когда все так объяснил...я все равно не правильно что то сделала. Вернее я получаю не то, что ожидаю:
Мое слово: xx(a)n(n)(n)(n)(a)
1. 2 буквы или цифры --> [[a-zA-Z0-9]{2}]
2. 1 буква или ничего-->[a-zA-Z]?
3. 1 цифра --> [0-9]{1}
4.1 цифра или ничего-->[0-9]?
5.1 цифра или ничего-->[0-9]?
6.1 цифра или ничего-->[0-9]?
4. 1 буква или ничего--> [a-zA-Z]?
Вместе: '^[a-zA-Z0-9]{2}[a-zA-Z]?[0-9]{1}[0-9]?[0-9]?[0-9]?[a-zA-Z]?'
Получаем на вход строчку:
'55A5AAAB'
И начинаем проверять. С 1й буквы.
^55A5AAAB
До этого места 55A5^AAABправильно тестирует. С этого нет.(((
[0-9]{1,4} тоже не будет работать. Но тут хоть понятно. Ему достаточно чтоб один из этих знаков был правильный, а остальные ему по хер, если не подходят.
Но когда я ему конкретно с
3. 1 цифра --> [0-9]{1}
4.1 цифра или ничего-->[0-9]?
5.1 цифра или ничего-->[0-9]?
6.1 цифра или ничего-->[0-9]? Почему тоже игнорирует?
Когда в коце еще $ добавила, тогда все правильно! Но почему?
drop function if exists validate_flight_number;
DELIMITER $$
CREATE FUNCTION validate_flight_number (fln varchar(8)) RETURNS int(1)
BEGIN DECLARE result_c int;
IF char_length(fln) >= 3 and fln regexp '^[a-zA-Z0-9]{2}[a-zA-Z]?[0-9]{1}[0-9]?[0-9]?[0-9]?[a-zA-Z]?$' then set result_c = 1;
else set result_c = 0;
END IF;
RETURN result_c;
END$$
DELIMITER ;