时间:2021-07-01 10:21:17 帮助过:3人阅读
1 引言
众所周知,用Erlang操作mysql数据库的需要通过emysql技术,emysql用起来非常简单,但是有些地方如果我们没有注意到就会有些问题。
2.问题汇总及解决
我们通过emysql基本操作数据库,大致逻辑代码如下:
get_terminal_online_statistic( StartTime )-> SQL = "SELECT * FROM terminal_online_statistic WHERE statistic_time <‘"++StartTime++"‘;", lager:info("The SQL is : ~p~n",[SQL]), {result_packet,_,_,Rows,_} = emysql:execute(nms_cache_pool,list_to_binary(SQL)), Rows.
一般这样的查询的结果存在Rows里面了是一个列表的形式
下面可以在nms_webserver里面查看其运行结果,效果如下图:
被红色标记的为要返回的结果。
但是如果我们要查询一个满足条件的总数(count(*))的话,返回给我们的是一个字符“!”的列表,其实就是对应的整数的列表,我们需要自己去转换一下:
SELECT count(*) FROM terminal_online_statistic WHERE domain_moid = ‘dcb80871-372b-4617-b329-9aafe6f78acb‘ && statistic_time BETWEEN ‘2015/07/28 19:47:32‘ AND ‘2015/08/04 19:47:32‘;
在数据库里面查询,运行的结果如下:
但是用emysql执行这个语句的返回结果如下:
我们也许会感到惊讶为什么不是33,但是熟悉erlang里面列表的字符其实就是整数,就会知道返回的就是33
我们只需要再对其进行提取就行了,方法如下:
获得的C就是33了,其实就是字符‘!‘的ASCII码,问题就解决了
关于emysql的若干问题
标签: