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 使用 text
或 character 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】:
您可以将联系人号码存储在 BIGINT 和 VARCHAR 中。
但需要在安全性和性能之间进行权衡。如果您担心性能(使用大数据集),那么您应该选择 bigint 但请先阅读此内容Google says never store phone numbers as numeric data 如果您不关心性能,因为数据集不是那么大,那么请使用 varchar。
src - [https://www.mayerdan.com/programming/2017/06/26/db_phone_types]
【讨论】:
以上是关于postgresql中电话号码的数据类型的主要内容,如果未能解决你的问题,请参考以下文章