Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Проверить формат varchar. my SQL

21.06.21 21:44
Re: Проверить формат varchar. my SQL
 
melodi_ постоялец

Что есть, то есть. Но ситуация еще хуже...Теперь правда мне стыдно. Когда все так объяснил...я все равно не правильно что то сделала. Вернее я получаю не то, что ожидаю:

Мое слово: 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 ;

 

Перейти на