2010-08-17 17:36
在网上查询了下,大概都是下面这个文章,文章很不错,但是就是说注意 ,没有提出解决方法。现在我来补充下,下面先说下这个文章,然后给出答案
所有整数类型可以有一个可选(非标准)属性UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。
mysql4:
mysql> create table wubx(a TINYINT unsigned not null default '0');
Query OK, 0 rows affected (0.04 sec)
mysql> select * from wubx;
Empty set (0.00 sec)
mysql> insert wubx values(0);
Query OK, 1 row affected (0.00 sec)
mysql> select * from wubx;
+------+
| a |
+------+
| 0 |
+------+
1 row in set (0.00 sec)
mysql> update wubx set a=a-1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> select * from wubx;
+------+
| a |
+------+
| 0 |
+------+
1 row in set (0.00 sec)
mysql5:
(root@localhost) [test]> create table wubx(a int(11) unsigned not null default '0');
Query OK, 0 rows affected (18.44 sec)
(root@localhost) [test]> select * from wubx;
Empty set (0.00 sec)
(root@localhost) [test]> insert into wubx values(0);
Query OK, 1 row affected (0.00 sec)
(root@localhost) [test]> update wubx set a=a-1;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
(root@localhost) [test]> select * from wubx;
+------------+
| a |
+------------+
| 4294967295 |
+------------+
1 row in set (0.00 sec)
mysql> show warnings;
+---------+------+-----------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------+
| Warning | 1264 | Out of range value adjusted for column 'a' at row 1 |
+---------+------+-----------------------------------------------------+
查了一下:
在对于数值处理时:
MySQL4 会在不合规定的值插入表前自动修改为 0
Mysql5 为了速度,只存放数二进制数据,而且在加减运算中,也是二进制的运算.
所以在使用unsigned 是小心0-1 的操作.尽量在这类操作前先做一个判断.
如果直接在程序里进行判定,难免会出现数据错误,因为有一点点时间内数据是放在内存的,而没放进库里,最好的办法还是直接送出sql语句进行修改,这里mysql5有解决办法 CONVERT( 字段 + (要加减的数字) AS SIGNED )就可以了。
例如:UPDATE `user` SET `tk` = CONVERT( tk + (-8) AS SIGNED ) WHERE `id` = '1330'
分享到:
相关推荐
unsigned表示无符号的意思,也就是非负数,只用于整型并且unsigned 是MYSQL自定义的类型,非标准SQL。用途1是红苕说的起到约束数值的作用,2是可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便...
后来通过给朋友那边把MySQL 5.1升级到MySQL 5.5去解决这个问题。 这也让我有兴趣去了解一下MySQL不同版本数据类型溢出的处理机制。 先看一下MySQL支持的整型数及大小,存储空间: pe Storage Minimum Value ...
Activerecord :: Mysql ::未签名 为ActiveRecordMySQL2适配器将无符号选项添加到整数类型。 支持版本 5.0 > ActiveRecord::VERSION >= 3.2 安装 将此行添加到您的应用程序的Gemfile中: gem 'activerecord-mysql...
printf("%st%st%st%st%st%sn",mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],mysql_row[5]); } } else { exit(-1); } mysql_free_result(mysql_ret); exit...
`id` mediumint(7) unsigned NOT NULL AUTO_INCREMENT, `level` tinyint(1) unsigned NOT NULL COMMENT '层级', `parent_code` bigint(14) unsigned NOT NULL DEFAULT '0' COMMENT '父级行政代码', `area_code` ...
该程序可以实现8位无符号采数及波形显示。
中国五级省市县镇村的MySQL完整数据,已经做成SQL文件,带建表语句 /* Navicat MySQL Data Transfer Target Server Type : MYSQL Target Server Version : 50612 File Encoding : 65001 Date: 2017-03-07 16:05:...
Mysql数据库设计 数据库设计 MYSQL数据库设计 串转义序列 \0 NUL(ASCLL 0) \' \" \b 退格 \n 新⾏ \r 回车 \t 制表符 \\ 反斜杠 数值列类型 TINYINT 1字节 ⾮常⼩的整数 有符号值:-128⾄127 ⽆符号值:0⾄255 ...
把unsigned int 对调
此为QString无损转char*和unsigned char* 。 当QString内容包含汉字时,转换char*等会发生失败。此接口解决了该问题。使用后char*与unsigned char*的qDebug()输出与QString输出结果相同。 注意,该函数返回unsigned ...
如何把char str,或unsigned char str转换成CString
讲述了volatile_unsigned_int地址映射的使用说明。
自己写的unsigned char二维数组转8位bmp的函数。
`id` mediumint(7) unsigned NOT NULL AUTO_INCREMENT, `level` tinyint(1) unsigned NOT NULL COMMENT '层级', `parent_code` bigint(14) unsigned NOT NULL DEFAULT '0' COMMENT '父级行政代码', `area_code` ...
实验6-1数据拷贝程序将一个尺寸为256的unsigned char数组中的数据(其中数据依次为0-255),分别逆序复制到类型为int, double的两个动态缓冲区中,并分别将两个缓冲区的起始地址及其中的数据、缓冲区的最后一个单元...
MYSQL世界各洲包含国家英文、中文、简称、层级关系表,`bby_country` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '0' ...
sqljdbc4-unsigned-2.0.jar
MYSQL世界各洲包含国家英文、中文、简称、层级关系表,`bby_country` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '...
MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, …,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。 本章我们将介绍如何使用...
SPB Mobile Shell introduces the next generation user interface while keeping all advantages of your mobile device For Symbian OS9.4 S60V5 Cool widgets to customize your Home screen ...