假设我在" people"中有以下数据?表
id name phone_number
1 Pete +651234-5678
2 John 1234 56 78 Main number
如果我的搜索字符串是" 123456789"如何提取与电话号码匹配的行 - 我假设需要一些正则表达式,但在Postgres中执行此操作的最佳方法是什么?
答案 0 :(得分:1)
看起来这样可行
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';"
这是最好的方式吗?
答案 1 :(得分:1)
当然不会找到您原来的搜索字符串,但我认为我的答案是完整的 - 只有投票才能说明?
select *, regexp_replace(phone_number, '[^0-9]', '', 'g')
from people
where position ( '12345678' in regexp_replace(phone_number, '[^0-9]', '', 'g')) >= 0 ;
答案 2 :(得分:0)
您可以使用以下查询:
SELECT * FROM people WHERE phone_number ~ '^1234\s*56\s*78.*'
模式\s*
将匹配零个或多个空格。正则表达式将匹配以下任何一项:
1234 56 78 Main number
123456 78 some text
12345678