DataWorks数据服务apiMysql数据源传入string类型的参数-1sql解析成了列表-1
现象:
传入String类型的参数-1sql解析成了列表-1。
解析出来的sql:SELECT name FROM tb_8string WHERE (concat('-1') = -1 OR c1 IN ('-1')) AND (concat([-1]) = -1 OR c2 IN (这里是个列表-1))
复现的SQL:select name from tb_8string where (concat(${c1}) = -1 OR c1 in (${c1})) AND (concat(${c2}) = -1 OR c2 in (${c2}))
原因:
一个入参不支持同时放在in运算和非in运算里。
请参考以下两种解决:
1、继续用基础SQL,拆成两个参数。比如c1拆成 a1和a2,c2拆成a3和a4。a1和a2传入相同的数值。a3和a4传入相同的数值。SQL改成:select name from tb_8string where (concat(${a1}) = -1 OR c1 in (${a2}))AND (concat(${a3}) = -1 OR c2 in (${a4}))
2、新建API,用高级SQL。用MyBatis语法来写语句。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。