MySQL存放IP地址 用数值型有什么好处

MySQL存放IP地址 用数值型有什么好处,第1张

大哥,你语法都错了 insert into table_name values(),(),()一般mysql存储ip用int型,int(10)inet_aton(ip)函数可以把ip字段转换为对应的整数存储 INET_NTOA可以把整数转换成ip字段

很多程序员都会创建一个

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节,“解决与不匹配行有关的问题”。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8665091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存