关于DB

你好,我用db执行下列测试语句:

Record record = Db.findFirst("SELECT CASE (1) WHEN 1 THEN (select count(1) from `t_2018-08`)  ELSE '0' END  as count;");

System.out.println(record.getStr("count"));

结果输出却是一个类似[B@710c2b53的值。这是怎么回事呢?

该语句在navicat里调试则正常。

后续:换了一种查询方式却好了

Db.findFirst("SELECT if(1,(select count(1)  from `t_2018-08`),0 )  as mycount");

不知道是不是bug。

@JFinal

评论区

Joe88

2018-09-06 17:11

@JFinal 不行,只能用下面那种方式正常,

JFinal

2018-09-06 17:37

@Joe88 单步调试,看一下返回值的具体类型是什么?

注意要调试进入 record.getStr(...) 里面去

你也可以通过 Object ret = record.get(Sting) 得到 ret 变量,看 ret 是什么类型

Joe88

2018-09-07 08:56

@JFinal 返回的类型是个字节数组。已经找到问题了,是因为语句后面的ELSE '0'的0加了单引号导致,去掉单引号就正常了。不过在navicat里跑有没有引号都正常。

热门反馈

扫码入社