sql - 删除 JSON_AGG(聚合函数)中的括号和引号
问题描述
public function fetchdrug(Request $search_drug){
$filter_drug = $search_drug->input('search_drug');
$all_drugs = HmsBbrKnowledgebaseDrug::selectRaw('DISTINCT ON (drug_code)
drug_code,
drug_name,
JSON_AGG(drug_dosage) AS dosage_list')
->GroupBy('drug_code', 'drug_name')
->orderBy('drug_code', 'ASC')
->get();
return response()->json([
'all_drugs'=>$all_drugs,
]);
}
我正在使用JSON_AGG
检索多行drug_dosage
并将它们组合成一个,但是我在输出中得到一个括号和引号,我该如何取出它?
更新:我在示例中遇到错误,因为我正在尝试使用str_replace
and的解决方案preg_replace
。我的问题是目标在 SQL 语句中,所以我怀疑这与错误有关,因为结果错误中还有其他数据:
Uncaught TypeError: Cannot use 'in' operator to search for 'length' in
{"drug_code":"CFZU",
"drug_name":"Cefazolin",
"dosage_list":"[\"<=4 mg\/L\", \"<=3 mg\/L\"]"},
{"drug_code":"TZPD","drug_name":"Pip\/Tazobactam",
"dosage_list":"[\"Pip\/Tazobactam\"]"}
解决方案
你可以string_agg
试试JSON_AGG
public function fetchdrug(Request $search_drug){
$filter_drug = $search_drug->input('search_drug');
$all_drugs = HmsBbrKnowledgebaseDrug::selectRaw('DISTINCT ON (drug_code)
drug_code,
drug_name,
string_agg(drug_dosage, ', ') AS dosage_list')
->GroupBy('drug_code', 'drug_name')
->orderBy('drug_code', 'ASC')
->get();
return response()->json([
'all_drugs'=>$all_drugs,
]);
}
推荐阅读
- postgresql - Dbvisualizer 查看表关系
- nested - Sequelize:按嵌套关联排序
- c++ - 创建不同类型 DNS 记录的消息
- netsuite - 如何获取销售订单 ID 并将其设置在 netsuite 的自定义记录中?
- iot - 如何在thingSpeak的api地址中传递“函数值”。我使用的是Arduino和sim900 GSM
- c++ - C++ 17 之前的函数交错
- php - laravel 中查询生成器中 with 子句的替代
- php - 按日期范围过滤 @json_decode 数据 php
- php - 缩短检查多个变量是否为空的方式
- docker - 如何在 Docker 容器中使用不同的用户运行 Jenkins