mysql插入的数据超出范围_MySQL如何处理超出范围的数值?

处理MySQL数值超出列数据类型的允许范围的方式取决于SQL模式,其方式如下:

(A)启用的SQL严格模式-启用严格SQL模式时,MySQL在输入放置范围值时返回错误。在这种情况下,某些或所有值的插入将失败。

例如,我们创建了一个表,该表包含两列,其中TINYINT和UNSIGNED TINYINT作为列上的数据类型。mysql> Create table counting(Range1 Tinyint, Range2 Tinyint Unsigned);

现在,借助以下命令,我们启用了严格的SQL模式mysql> Set SQL_MODE ='traditional';

现在,如果我们尝试将超出范围的值插入到列中,则MySQL会反映错误并且两个插入均失败,可以通过下面的查询来检查-mysql> Insert into Counting(Range1, Range2) Values(256,256);

ERROR 1264 (22003): Out of range value for column 'Range1' at row 1

mysql> Select * from counting;

Empty set (0.00 sec)

(B)禁用SQL严格模式-禁用限制性SQL模式时,MySQL会将值裁剪到该列数据类型的适当端点,并累积结果值。MySQL反映警告,这是由于裁剪导致的列分配转换的结果。

例如,如果在禁用SQL严格模式后将值插入列中,则MySQL将反映警告并在将它们修整到合适的端点后存储这些值。通过以下查询可以理解-mysql> Set SQL_MODE = '';

mysql> Insert Into Counting(Range1,Range2) values (256,256);

mysql> Show Warnings;

+---------+------+-------------------------------------------------+

| Level   | Code | Message                                         |

+---------+------+-------------------------------------------------+

| Warning | 1264 | Out of range value for column 'Range1' at row 1 |

| Warning | 1264 | Out of range value for column 'Range2' at row 1 |

+---------+------+-------------------------------------------------+

2 rows in set (0.00 sec)

mysql> Select * from Counting;

+--------+--------+

| Range1 | Range2 |

+--------+--------+

| 127    | 255    |

+--------+--------+

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值