ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我应该使用哪种数据类型来处理九位数的帐号,为什么?

2019-11-19 12:08:59  阅读:324  来源: 互联网

标签:informix sql c database


我应该使用哪种数据类型来处理9位数字的帐号,为什么?

varchar(9)或int或小数或其他内容?

我是从数据库角度讲的-DBMS是Informix.

解决方法:

TL; DR使用CHAR(9).

您有许多选择,其中大多数在注释中提到.选项具有不同的权衡.他们包括:

> CHAR(9).这使用9个字节的存储空间,但是可以存储前导零,并且可以节省应用程序中的格式.您可以编写一个检查约束,以确保该值始终包含9位数字.如果以后需要使用更长的数字,则可以轻松地将类型扩展为CHAR(13)或CHAR(16)或其他类型.
>整数.这将使用4个字节的存储空间.如果需要前导零,则必须自行格式化.如果以后需要更多数字,则需要将类型更改为BIGINT.
>系列.可以在一个表上使用它,当您在列中插入零时会自动生成新值.交叉引用表将使用INTEGER类型.
> DECIMAL(9,0).这使用5个字节的存储空间,并且不存储前导零,因此您必须自己格式化它们.如果以后需要更多数字,则可以将类型更改为DECIMAL(13,0)或DECIMAL(16,0)或其他.
> BIGINT和BIGSERIAL.这些是8字节整数,可以毫无问题地将您带到16位数字.您必须自己提供前导零.
> INT8和SERIAL8-不要使用这些类型.
> VARCHAR(9).由于长度是可变的,因此不太合适.磁盘上需要10个字节,其中9个就足够了.
> LVARCHAR(9).这甚至比VARCHAR(9)更不合适.
> NCHAR(9).这实际上可以与CHAR(9)等效,但是如果仅存储数字,则也可以使用CHAR(9).
> NVARCHAR(9).由于VARCHAR(9)和NCHAR(9)不适合的相同原因而不合适.
>金钱(9,0).基本上与DECIMAL(9,0)等效,但可能会吸引货币符号-最好使用DECIMAL(9,0).

除非您设计使用INTEGER进行存储但提供对CHAR(9)的转换函数并添加前导零的扩展类型,否则任何其他类型都会很快不合适.

标签:informix,sql,c,database
来源: https://codeday.me/bug/20191119/2035806.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有