首页 > Operation System > mysql的sql语句中直接支持算术运算符

mysql的sql语句中直接支持算术运算符

2009年10月11日 发表评论 阅读评论

我有个mysql库
里面有个server表
其存储ip地址的是一个unsigned int(10)的变态的数据类型
其存储的数据是ip地址的
((第一字节*256+第二字节)*256+第三字节)*256+第四字节
因此,表里的ip地址数据相当的不直观
程序里倒无所谓
写个自函数转一下就可以了
但我如果要在mysql控制台、直接sql语句里显示直观ip信息呢
该怎么办呢
今天终于碰到这么个问题
翻了翻mysql文档
原来mysql直接支持算术运算符+、-、*、/,甚至连取余%都支持
再结合取整函数floor()、字串连接函数concat()
问题解决了

select concat(floor(ip/(256*256*256)), “.”, floor(ip/(256*256))%256, “.”, floor(ip/256)%256, “.”, ip%256) as ip_s, product, role, contact from server

  1. 2010年5月18日17:30 | #1

    汗一个
    原来mysql有函数inet_aton来转换整数数据到利于阅读的格式;inet_ntoa则做相反的工作。
    所以上面的sql语句完全可以简化为
    SELECT INET_NTOA(ip) AS ip_s, product, role, contact FROM server

  1. 本文目前尚无任何 trackbacks 和 pingbacks.