Как выбрать записи из таблицы, регулярные выражения которых выполняются

Рейтинг: 0Ответов: 1Опубликовано: 21.06.2023

имеется таблица

id reg mess
1 [V\d]{4} тут сообщение 1
2 ([a-z]{2})([0-9]{7}) тут сообщение 2
3 [A-Z\d]{4} тут сообщение 3

как имея входные данные V123 получить все значения столбца mess где выполняется регулярное выражение из reg

Ответы

▲ 0

Попробуйте так

select * 
from data
where regexp_like('V123',reg)

Пример упражнения

create table data (id int,reg varchar(100), mess varchar(100));
insert into data values
 (1,'[V\d]{4}','тут сообщение 1')
,(2,'([a-z]{2})([0-9]{7})','тут сообщение 2')
,(3,'[A-Z\d]{4}','тут сообщение 3')
,(4,'[A-Z\d]{3}','тут сообщение 4')
,(5,'([a-z]{1})([0-9]{3})','тут сообщение 5')
,(6,'[V\d]{3}','тут сообщение 6')
;
create table test (idd int,testdata varchar(100));
insert into test values
 (100,'V123')
,(101,'X1234')
,(102,'V12')
,(103,'AB1234567')
,(104,'EF7')
;

select * 
  ,regexp_like(testdata,reg) ok
from data,test
where regexp_like(testdata,reg)
order by id,idd

Результат

id reg mess idd testdata ok
2 ([a-z]{2})([0-9]{7}) тут сообщение 2 103 AB1234567 1
5 ([a-z]{1})([0-9]{3}) тут сообщение 5 100 V123 1
5 ([a-z]{1})([0-9]{3}) тут сообщение 5 101 X1234 1
5 ([a-z]{1})([0-9]{3}) тут сообщение 5 103 AB1234567 1