在INT列中插入数字零

时间:2018-05-16 20:38:51

标签: mysql

我在mysql中有这个表:

CREATE TABLE `user_cards` (`id` int(11) NOT NULL,`card_number` bigint(20) NOT NULL,`card_cvv` int(2) NOT NULL,`card_expiration` date NOT NULL,`card_company` varchar(100) NOT NULL,`created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

当我尝试在card_numbercard_cvv中插入以0开头的数字时,例如 0048 ,默认情况下,mysql似乎删除了前两个零(仅记录值 48

在我的情况下,我将有以零开头的记录,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

对于这样的事情,最好存储为CHAR(16)。你知道它的长度是16位,这实际上是以字节而不是数字存储值。在另一端,它作为一个字符串返回,但你实际上想要一个返回的字符串,使用零和全部。数字永远不会添加前导零。

CREATE TABLE `user_cards` (
    `id` int(11) NOT NULL,
    `card_number` char(16) NOT NULL,
    `card_cvv` char(4) NOT NULL,
    `card_expiration` date NOT NULL,
    `card_company` varchar(100) NOT NULL,
    `created_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

我应该注意,如果您实际存储信用卡数据,则应 从不 执行此操作。信用卡数据不应存储在数据库中:数据泄露的发生方式,如果您认为可能不会发生, 您错了 < / strong>即可。使用外部网站获取信用卡或使用提供令牌的第三方API代替。