首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PostgreSQL中存储电话号码?

如何在PostgreSQL中存储电话号码?
EN

Database Administration用户
提问于 2017-02-18 15:58:32
回答 2查看 25.8K关注 0票数 18

假设我想将电话号码存储在数据库中。我可以接受美国境外的电话号码。我该如何存储这些电话号码呢?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-02-18 15:58:32

libphonenumber

如果可能的话,请始终使用规范形式。形式越规范化越好。如果有标准,就用它。对于这个问题,让我们使用谷歌的降钙素,通过降钙素的代理。

代码语言:javascript
复制
CREATE EXTENSION pg_libphonenumber;

这当前安装具有比较运算符和函数的phone_number类型。它以国际规范形式存储数字。在我看来,这是最好的妥协。

代码语言:javascript
复制
parse_phone_number('textnumber', 'CountryCode');

因为我们可以知道电话号码是相等的,我们提供了一个内部的正常形式,所以我们可以这样做。

代码语言:javascript
复制
SELECT parse_phone_number('03 7010 1234', 'AU') = parse_phone_number('(03) 7010 1234', 'AU');

(返回true)。这也意味着DISTINCT可以工作,所以我们可以这样做,以获得上面似乎想要的效果。

代码语言:javascript
复制
CREATE TABLE foo
AS
  SELECT DISTINCT parse_phone_number(ph, 'AU')
  FROM ( VALUES
    ('0370101234'),
    ('03 7010 1234'),
    ('(03) 7010 1234')
  ) AS t(ph);
SELECT 1

放进去..。

代码语言:javascript
复制
 parse_phone_number 
--------------------
 +61 3 7010 1234
(1 row)
票数 23
EN

Database Administration用户

发布于 2022-10-16 11:51:12

有一个没有扩展pg_libphonenumber的解决方案。

  • phone.sql用于验证国际E.164格式的电话号码。
  • 函数phone_parse.sql将电话号码解析为三部分:country_codearea_codelocal_number
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/164796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档