Как найти номера телефонов с неожиданными символами, используя SQL в Oracle? - PullRequest
0 голосов
/ 21 декабря 2018

Мне нужно найти строки, в которых поле номера телефона содержит неожиданные символы.

Большинство значений в этом поле выглядят как ...

123456-7890

Это ожидается.Тем не менее, мы также видим значения символов в этом поле, такие как * и #.

Я хочу найти все строки, где существуют эти неожиданные символьные значения.

Ожидается:

  • Ожидаются числа
  • Ожидается дефис с числами(одного дефиса нет)
  • Ожидается NULL
  • Ожидается пустое значение

Попробовал это:

WHERE phone_num is not like ' %[0-9,-,' ' ]%

По-прежнему появляются строки, где телефонимеет номера.

Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

Вы можете использовать translate()

...
WHERE translate(Phone_Number,'a1234567890-', 'a') is NOT NULL

Это удалит все допустимые символы, оставив недопустимые.Если все символы действительны, результатом будет NULL.Это не проверяет формат, для этого вам нужно будет использовать REGEXP_LIKE или что-то подобное.

0 голосов
/ 21 декабря 2018

с https://regexr.com/3c53v адреса вы можете редактировать регулярное выражение в соответствии с вашими потребностями.

Я собираюсь использовать для этого пример регулярных выражений

select * from Table1
Where NOT REGEXP_LIKE(PhoneNumberColumn, '^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$')
0 голосов
/ 21 декабря 2018

Oracle имеет REGEXP_LIKE для сравнения регулярных выражений:

WHERE REGEXP_LIKE(phone_num,'[^0-9''\-]')

Если вы не знакомы с регулярными выражениями, есть много хороших сайтов, которые помогут вам построить их.Мне нравится этот

0 голосов
/ 21 декабря 2018

Вы можете использовать regexp_like().

...
WHERE regexp_like(phone_num, '[^ 0123456789-]|^-|-$')

[^ 0123456789-] соответствует любому символу, который не является ни пробелом, ни цифрой, ни дефисом.^- соответствует дефису в начале и -$ в конце строки.Каналы "ors", т.е. a|b соответствует, если шаблон a соответствует, если шаблон b соответствует.

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