我有垃圾的电话号码字段,我想清理他们。我想知道如何查询检查是否有任何特殊字符,字母在电话号码字段。有人能帮助吗?我尝试了这个查询,没有工作。我需要在PostgreSQL的代码
select phone from table where phone like '[^[:alpha:]]' and phone <>''
-- and phone not like '[^0-9]'
order by phone
表中的输入值如下所示:
Phone
-----
(443)-554-6677
111-111-1111
345-rty-34fr
4345434444 ext
输出(应如下所示有效电话号码)
(443)-554-6677
111-111-1111
感谢你的帮助。
谢谢你,史瓦提。
2条答案
按热度按时间plicqrtu1#
我们可以使用POSIX正则表达式来获得所需的输出:
您似乎试图将正则表达式语法与
like
操作符一起使用,但这是不正确的。它基本上只提供%
前缀/后缀通配符和_
单字符通配符。如果你想更加严格,我们可以这样做:
测试夹具
xyhw6mcr2#
我用这个脚本把美国电话号码格式化成国际格式。它工作得很好。这个脚本看这个号码是不是故意格式化的,如果是,删除所有无用的字符,我发现,如果一个数字曾经存储与+#########格式,那么它是一个很好的数字99%的时间。如果它存储与(###)###-####格式化后,99%的情况下它是美国、加拿大、英国的数字。而这99%的统计数据都是当场编造的。
这个脚本的缺点是它不切出扩展名,你可以通过检查pclean输出是否以+1开头并且长度大于12个字符来切出扩展名,如果是,那么slice(12,-1)或者类似的语句。