Этот пример, как мы надеемся, поможет, и он соответствует значениям независимо от того, в каком порядке они появляются в строке в записи БД.
Создать пример таблицы:
CREATE TABLE t
(val VARCHAR2(100));
Вставить записи:
INSERT INTO t VALUES
('1|''A'',''B'',''C''');
INSERT INTO t VALUES
('2|''C'',''A''');
INSERT INTO t VALUES
('3|''A'',''B''');
Проверить значения:
SELECT * FROM t;
1|'A','B','C'
2|'C','A'
3|'A','B'
Проверьте решение для 'A':
SELECT val
FROM t
WHERE REGEXP_LIKE(val, '(A)');
1|'A','B','C'
2|'C','A'
3|'A','B'
Проверьте решение для A и B
SELECT val
FROM t
WHERE REGEXP_LIKE(val, '(A|B).*(A|B)');
1|'A','B','C'
3|'A','B'
Если вы хотите убедиться, что часть результата 1|
не совпадает ни с чем, вы можете запросить, используя:
SELECT val
FROM t
WHERE REGEXP_LIKE(val, '(.\|.*)(A)');
и
SELECT val
FROM t
WHERE REGEXP_LIKE(val, '(.\|.*)(A|B).*(A|B)');
Надеюсь, это поможет ...