@v1talys
или
——-
@alexeionin
или
Игорь Дроздов
—--
@SergeyElagin
—--
Я не буду комментировать решения коллег, лишь скажу спасибо за старания 🤝
Если вам понравился такой формат задач, когда решения присылаете вы - ставьте 👍
В этом, кстати, есть замечательная особенность, на одну и ту же задачу можно посмотреть с совершенно разных сторон.
Как говорится, "каждую задачу можно решить разными способами"
#решениезадачи #regexp
alter table tab1
add constraint check_vname
check (not regexp_substr(vname, '[ABCDEFGHIJKLMNOPQRSTUVWXYZ]{'||length(vname)||'}') is null);
или
alter table tab1
add constraint check_vname2
check(trim(translate(vname, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', ' ')) is null);
——-
@alexeionin
alter table tab1 add constraint tab1$vname$chk check (trim(translate(vname,'ABCDEFGHIJKLMNOPQRSTUVWXYZ',' ')) is null)
или
alter table tab1 add constraint tab1$vname$chk check (regexp_count(vname, '[^[:upper:]]|[^A-Z]')=0);
——-
Игорь Дроздов
alter table tab1 add constraint lat_upper check(regexp_like(vname, '^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]+$'));
—--
@SergeyElagin
alter table tab1 add constraint lat_upper check(regexp_like(vname collate binary_ci,'^[A-Z]+$','c'));
—--
Я не буду комментировать решения коллег, лишь скажу спасибо за старания 🤝
Если вам понравился такой формат задач, когда решения присылаете вы - ставьте 👍
В этом, кстати, есть замечательная особенность, на одну и ту же задачу можно посмотреть с совершенно разных сторон.
Как говорится, "каждую задачу можно решить разными способами"
#решениезадачи #regexp
Задача: какой будет результат выполнения запроса:
nls_sort равен binary ❗️
Решение: будет 1️⃣
Возможно кто-то шокирован этим ответом. Ведь в строчке присутствуют спец символы типа “_^\”. А в паттерне мы не указывали спец символы. Как так то?
Указание диапазона “A-z” содержит в себе подводные камни.
Может помнит кто-то из курса университета про ASCII табличку? Assembler? )
В общем, между символом “Z” и “a” есть еще шесть спец символов, которые как раз таки попадают в диапазон A-z (см. скрин).
Соответственно, регулярка их пропускает.
Эта особенность проявляется не только в Oracle, но и в других языках, например в Java.
Будьте внимательны 👀
Надеюсь вам понравилась задачка 👍
#решениезадачи #regexp
select count(*)
from dual
where regexp_like('A_^bc\D','[A-z]+');
nls_sort равен binary ❗️
Решение: будет 1️⃣
Возможно кто-то шокирован этим ответом. Ведь в строчке присутствуют спец символы типа “_^\”. А в паттерне мы не указывали спец символы. Как так то?
Указание диапазона “A-z” содержит в себе подводные камни.
Может помнит кто-то из курса университета про ASCII табличку? Assembler? )
В общем, между символом “Z” и “a” есть еще шесть спец символов, которые как раз таки попадают в диапазон A-z (см. скрин).
Соответственно, регулярка их пропускает.
Эта особенность проявляется не только в Oracle, но и в других языках, например в Java.
Будьте внимательны 👀
Надеюсь вам понравилась задачка 👍
#решениезадачи #regexp