Поиск данных из столбца таблицы с использованием регулярного выражения в oracle sql - PullRequest
0 голосов
/ 27 января 2020

Мне нужно найти данные из таблицы с номером телефона человека. Но номер телефона сохраняется в разных формах. Но его длина равна 9 и состоит только из цифр. Как я могу найти число, когда я ищу с помощью stati c формы, такой как 998732387, тогда результат должен быть.

2 | 99 873 23 87 | Kike

Когда я ввожу 971234573, результат должен выглядеть следующим образом :

3 | 97 123-45-73 | Cris

mytable

-----------------------------------------
id        |   phone        | name
----------------------------------------
1         |  991234567     | Michael
2         |  99 873 23 87  | Kike
3         |  97 123-45-73  | Cris

Пожалуйста, помогите мне. Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 27 января 2020

Одним из способов является удаление всех нецифровых чисел:

select *
from mytable
where regexp_replace(phone, '[^[:digit:]]', '') = '971234573';
0 голосов
/ 27 января 2020

Или, если ваша база данных не поддерживает регулярные выражения (в это трудно поверить), translate сделает свою работу:

SQL> with test (id, phone, name) as
  2    -- your sample data
  3    (select 1, '991234567', 'Michael' from dual union all
  4     select 2, '99 873 23 87', 'Kike' from dual union all
  5     select 3, '97 123-45-73', 'Cris' from dual
  6    ),
  7  only_digits as
  8    -- remove non-digits from the PHONE colunmn (pre-regex version)
  9    (select id, phone, name,
 10       translate(phone, 'a' || translate(phone, 'x0123456789x', 'x'), 'a') digit
 11     from test
 12    )
 13  select id, phone, name
 14  from only_digits
 15  where digit = '998732387';

        ID PHONE        NAME
---------- ------------ -------
         2 99 873 23 87 Kike

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...