Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / специфическая фильтрация / 8 сообщений из 8, страница 1 из 1
11.02.2021, 16:05
    #40044493
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
как бы так получить имена из таблицы, в которых встречается 'abc', но ни слева ни справа к нему не примыкают буквы и цифры?

select * from tabl t where t.name like '%abc%'

нам даст следующее:

QWabcDF
Q1abc DFF
Q1abc45
abc
Q abc 123
Q (abc)ddfd
abc
abc.

нам нужно из всего этого только следующее:

abc
Q abc 123
Q (abc)ddfd
abc
abc.
...
Рейтинг: 0 / 0
11.02.2021, 16:13
    #40044496
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
verter,
Код: plsql
1.
2.
3.
4.
select *
from   (select 'Q1abc45' a from   dual
        union  select 'Q abc 123' from   dual) t
where  regexp_like(t.a, '[^0-9]abc[^0-9]')
...
Рейтинг: 0 / 0
11.02.2021, 19:59
    #40044614
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
123йй
Код: plsql
1.
'[^0-9]abc[^0-9]'

Код: plsql
1.
'abc', 'XYZabc', 'abcQWERTY'
...
Рейтинг: 0 / 0
12.02.2021, 09:16
    #40044726
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
verter,

Код: plsql
1.
'(^|\W|_)abc($|\W|_)'
...
Рейтинг: 0 / 0
12.02.2021, 14:47
    #40044847
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
123йй
verter,
Код: plsql
1.
2.
3.
4.
select *
from   (select 'Q1abc45' a from   dual
        union  select 'Q abc 123' from   dual) t
where  regexp_like(t.a, '[^0-9]abc[^0-9]')



спасибо. с цифрами убирает, но вот с буквами нет.

и вот так не прокатывает:
Код: plsql
1.
2.
3.
4.
5.
6.
select *
from   (select 'Q1abc45' a from   dual
        union  select 'Q abc 123' from   dual
        union  select 'QXabcBV' from   dual) t
where  regexp_like(t.a, '[^0-9]abc[^0-9]') and
           regexp_like(t.a, '[^A-Z]abc[^A-Z]')
...
Рейтинг: 0 / 0
12.02.2021, 14:59
    #40044856
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
AmKad
verter,

Код: plsql
1.
'(^|\W|_)abc($|\W|_)'



да, супер. только один случай не работает когда:
Код: plsql
1.
2.
select *
from   (select 'Q1 abc' a from dual) t



тут должен выбирать, не отфильтровывать.
...
Рейтинг: 0 / 0
12.02.2021, 15:18
    #40044870
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
verter
тут должен выбирать, не отфильтровывать.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
with s as (select * from table(sys.odcivarchar2list(
'Q1 abc',
'Q1 abc ',
'QWabcDF',
'Q1abc DFF',
'Q1abc45',
'abc',
'Q abc 123',
'Q (abc)ddfd',
'abc',
'_abc_',
' abc ',
'_abc',
'abc_',
'abc.',
'abc',
'Q abc 123',
'Q (abc)ddfd',
'abc',
'abc.'
)))
select s.*, case when regexp_like(column_value, '(^|\W|_)abc($|\W|_)') then '+' else '-' end is_matched
from s;

COLUMN_VALUE    IS_MATCHED
--------------- ----------
Q1 abc          +
Q1 abc          +
QWabcDF         -
Q1abc DFF       -
Q1abc45         -
abc             +
Q abc 123       +
Q (abc)ddfd     +
abc             +
_abc_           +
 abc            +
_abc            +
abc_            +
abc.            +
abc             +
Q abc 123       +
Q (abc)ddfd     +
abc             +
abc.            +

19 rows selected

SQL> 
...
Рейтинг: 0 / 0
12.02.2021, 17:32
    #40044908
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
специфическая фильтрация
AmKad,

извиняюсь, я просто вот так делал:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select *
from   (select 'Q1 abc' a from dual) t
where 
    regexp_like(t.a,'[^0-9]abc[^0-9]') and regexp_like(t.a,'(^|\W|_)abc($|\W|_)') 

если делать так:

select *
from   (select 'Q1 abc' a from dual) t
where 
     regexp_like(t.a,'(^|\W|_)abc($|\W|_)') 



то всё норм. спасибо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / специфическая фильтрация / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]