mysql干啥的e_关于emysql的若干问题

本文介绍了在Erlang中使用emysql库操作MySQL时遇到的一个问题,即当执行COUNT(*)查询时,返回的结果不是预期的数值而是字符'!'的ASCII码。作者通过分析发现,这是因为emysql返回的结果形式导致的误解,并提供了解决方案,即从返回的ASCII码中提取正确的计数。
摘要由CSDN通过智能技术生成

1 引言

众所周知,用Erlang操作mysql数据库的需要通过emysql技术,emysql用起来非常简单,但是有些地方如果我们没有注意到就会有些问题。

2.问题汇总及解决

我们通过emysql基本操作数据库,大致逻辑代码如下:

get_terminal_online_statistic( StartTime )->

SQL = "SELECT * FROM terminal_online_statistic WHERE statistic_time 

lager:info("The SQL is : ~p~n",[SQL]),

{result_packet,_,_,Rows,_} = emysql:execute(nms_cache_pool,list_to_binary(SQL)),

Rows.

一般这样的查询的结果存在Rows里面了是一个列表的形式

下面可以在nms_webserver里面查看其运行结果,效果如下图:

1fd6936dfa91816264f8277906e769bd.png

55732c2c5f26ee7c005e2650420e4824.png

被红色标记的为要返回的结果。

但是如果我们要查询一个满足条件的总数(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';

在数据库里面查询,运行的结果如下:

7cf0e877d37c6181c6c5d7cb177592cd.png

但是用emysql执行这个语句的返回结果如下:

cc220ac61e12a1c774ddb17365eee61d.png

我们也许会感到惊讶为什么不是33,但是erlang里面列表的字符其实就是整数,就会知道返回的就是33

a8b36926b173e1b630cd85c6130dc364.png

我们只需要再对其进行提取就行了,方法如下:

52070e37abc8a4d620b00633ab616f0d.png

获得的C就是33了,其实就是字符'!'的ASCII码,问题就解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值