为什么在 groovy 中执行 sql 查询时返回“[COUNT (*): 0]”而不是“0”?

时间:2021-04-14 09:51:16

标签: sql groovy

为什么在 groovy 中执行 sql 查询时返回“[COUNT (*): 0]”而不是“0”?我该怎么做才能只返回一个数字?

            def res = sql.firstRow("""SELECT count(*) FROM bd.pas WHERE INN = ?
AND SYSDATE >= RECDATEBEGIN AND SYSDATE < RECDATEEND AND NVL(DLL, 0) = 0
""",['test'])
            println(res)

2 个答案:

答案 0 :(得分:1)

在查询中使用别名:

def res = sql.firstRow("""SELECT count(*) as num FROM bd.pas WHERE INN = ?
AND SYSDATE >= RECDATEBEGIN AND SYSDATE < RECDATEEND AND NVL(DLL, 0) = 0
""",['test'])

然后读取特定字段:

println(res.num)

答案 1 :(得分:1)

firstRow() 返回一个 GroovyRowResult,它本质上是一个 Map

这就是您得到 [COUNT (*): 0] 的原因。

要仅从中获取数字,您可以这样做:

def res = sql.firstRow("""SELECT count(*) FROM bd.pas ...""",['test']).values().first()