postgresql中电话号码的数据类型

Posted

技术标签:

【中文标题】postgresql中电话号码的数据类型【英文标题】:Datatype for phone numbers in postgresql 【发布时间】:2020-05-13 13:14:26 【问题描述】:

我是 postgresql 的新手,所以谁能告诉我在 pgadmin 中创建表时是否有任何特定的数据类型可以在 postgresql 中存储电话号码,还是只是字符串?

【问题讨论】:

请看以下链接:dba.stackexchange.com/questions/164796/… 更好用character @ZakirHossain:不,don't use char 使用 textcharacter varying 我看到了链接,但它没有提到文本或串行等数据类型。所以我应该选择文本数据类型 你应该使用字符串 【参考方案1】:

我建议使用text 并添加一个检查约束来测试电话号码的有效性。

这是domains 的一个很好的用例。特别是如果您在多个地方都需要这样的列,那么拥有一个包含检查约束的域会很方便。

【讨论】:

域可能如下所示:CREATE DOMAIN iol.phone_number AS TEXT CHECK( VALUE ~ '^(\+\d1,2\s)?\(?\d3\)?[\s.-]?\d3[\s.-]?\d4$' ); @NeilGuyLindberg 这可能适用于某些国家/地区。 真的。此正则表达式不允许使用国家/地区代码。这是我在您将我指向域后为美国组织的应用程序添加的内容。我只是想如果该链接移动了,一个小例子可能会有所帮助。 或者对于美国,域名可能看起来像CREATE DOMAIN iol.phone_number AS VARCHAR(10) CHECK(VALUE ~ '^[0-9]10$');【参考方案2】:

您可以将联系人号码存储在 BIGINTVARCHAR 中。

但需要在安全性和性能之间进行权衡。如果您担心性能(使用大数据集),那么您应该选择 bigint 但请先阅读此内容Google says never store phone numbers as numeric data 如果您不关心性能,因为数据集不是那么大,那么请使用 varchar。

src - [https://www.mayerdan.com/programming/2017/06/26/db_phone_types]

【讨论】:

以上是关于postgresql中电话号码的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 数据类型

在MySQL中电话号码的数据类型可以采用double型吗?

PostgreSQL 中 JSON 数据类型的大小限制

postgresql数据库——数据类型总结

PostgreSQL 中 Long 数据类型的等价物是啥?

PostgreSQL 中定义自己需要的数据类型