VARCHAR(15)
字段来存放字符串形式的IP而不是整形的IP。如果你用整形来存放,只需要4个字节,并且你可以有定长的字段。而且,这会为你带来查询上的优势,尤其是当你需要使用这样的WHERE条件:IP
between
ip1
and
ip2。
我们必需要使用UNSIGNED
INT,因为
IP地址会使用整个32位的无符号整形。
而你的查询,你可以使用
INET_ATON()
来把一个字符串IP转成一个整形,并使用
INET_NTOA()
把一个整形转成一个字符串IP。在PHP中,也有这样的函数
ip2long()
和
long2ip()。
$r
=
"UPDATE
users
SET
ip
=
INET_ATON('{$_SERVER['REMOTE_ADDR']}')
WHERE
user_id
=
$user_id"
MySQL中可以用来做价格的字段一般有float、double、decimal如定义一个money字段类型为float(9,2),则money字段最大长度为9,整数位是6位,小数位是2位。
以下摘自MySQL 5.1参考手册:
1、FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
小(单精度)浮点数。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。这些是理论限制,基于IEEE标准。实际的范围根据硬件或 *** 作系统的不同可能稍微小些。
M是小数总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数位。
如果指定UNSIGNED,不允许负值。
使用浮点数可能会遇到意想不到的问题,因为在MySQL中的所有计算用双精度完成。参见A.5.7节,“解决与不匹配行有关的问题”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)