Oracle SQL regexp_like по типам Юникод
Допустим, у меня есть шаблон в типах Unicode (или в категориях Unicode, согласно https://www.regular-expressions.info/unicode.html)
LLLLZLLLZLLLL
NNNN
Я пытаюсь написать запрос SQL, выбирая записи в столбце, который точно соответствует шаблону.
У меня есть запись "2343" в этом столбце вместе со многими другими смешанными буквенными числами или более длинными (более 4) числовыми символами Юникода.
Я хочу получить ровно "2343" (или любую запись 4-х номеров Юникода).
Пробовал несколько, например
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}{4}S]');
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '[^\p{N}\p{N}\p{N}\p{N}S]');
Ничего не работает
2 ответа
Решение
Похоже, что это не оракул синтаксис для классов символов Unicode.
Пытаться [:digit:]
для любой цифры.
смотрите здесь
Спасибо @1010! Вы подтолкнули меня в правильном направлении! Эти работы для меня:
4987 - NNNN
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:digit:]]{4}$');
Ivan Joe Test - LLLLZLLLZLLLL
SELECT field1
FROM myTable1
WHERE regexp_like(field1, '^[[:alpha:]]{4}[[:space:]][[:alpha:]]{3}[[:space:]][[:alpha:]]{4}$');