поиск номера телефона postgres - PullRequest
0 голосов
/ 10 мая 2018

Предположим, у меня есть следующие данные в таблице "люди"

 id     name      phone_number
 1      Pete      +651234-5678
 2      John      1234 56 78 Main number

Если бы у меня была строка поиска «123456789», как бы я извлек строки, соответствующие номеру телефона - я предполагаю, что требуется некоторое регулярное выражение, но каков наилучший подход для этого в Postgres?

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

Вы можете использовать следующий запрос:

SELECT * FROM people WHERE phone_number ~ '^1234\s*56\s*78.*'

Шаблон \s* будет соответствовать нулю или более пробелов. Регулярное выражение будет соответствовать любому из следующего:

1234 56 78 Main number
123456 78 some text
12345678
0 голосов
/ 10 мая 2018

Ваша оригинальная поисковая строка не будет найдена, конечно, но я думаю, что мой полный ответ - только голоса скажут ??

select *, regexp_replace(phone_number, '[^0-9]', '', 'g')  
from people 
where position ( '12345678' in regexp_replace(phone_number, '[^0-9]', '', 'g')) >= 0 ;
0 голосов
/ 10 мая 2018

Похоже, это будет работать

 x="SELECT id FROM people WHERE regexp_replace(phone_number, '[^0-9]', '', 'g') = '12345678';"

или, возможно,

x="SELECT id FROM people WHERE regexp_replace(phone_number, '[^0-9]', '', 'g') LIKE '12345678';"

Это лучший способ?

...