莫拉莱斯 发表于 2024-9-4 09:57:50

数据表查询提问

我的o2oa版本是8.0+,连接的postgresql数据库,现在我为一个包含stringList类型字段的数据表编写statement,使用的原生SQL,其中用到了json_agg函数,代码如下:
return 'SELECT o.xid as id, o.xcertificateName as certificateName, o1.xlabel as prizeParent, json_agg(o2.xfiles) as files FROM QRY_DYN_PRIZETABLE o LEFT JOIN QRY_DYN_PRIZETYPESTABLE o1 ON o.xprizeName = o1.xlabel LEFT JOIN QRY_DYN_PRIZETABLE_FILES o2 ON o.xid=o2.prizetable_xid ' + where + ' GROUP BY o.xid, o.xcertificateName, o1.xlabel order byo.xupdateTime desc'

我得到的结果是这样的:
files: {
    "type": "json",
    "value": "[\"bfa320b6-4f78-4637-a601-f49cecc9ef34\"]"
}

但我希望是这样的:
files: ["bfa320b6-4f78-4637-a601-f49cecc9ef34"]

即我希望返回的不是type为json,value为json字符串的一个对象,而是直接返回一个数组,请问能做到吗?

启蒙星 发表于 2024-9-6 10:26:53

在返回中做不到这样转换,但两个数据类型通过js转换下不是很方便的吗

莫拉莱斯 发表于 2024-9-6 20:11:08

启蒙星 发表于 2024-9-6 10:26
在返回中做不到这样转换,但两个数据类型通过js转换下不是很方便的吗

是很方便,JSON.parse一下就行,但我懒,所以想看看万一有办法呢

莫拉莱斯 发表于 2024-9-25 23:56:47

启蒙星 发表于 2024-9-6 10:26
在返回中做不到这样转换,但两个数据类型通过js转换下不是很方便的吗

我还有一个问题,当我写了好几个这样的联查之后,每一个数组的长度都会变成所有数组中最长的长度,例如我联查和stringlista和stringlistb,假设a中有3个值,b中为空,则b的value会显示为""。这是正确的吗?
页: [1]
查看完整版本: 数据表查询提问