开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks数据服务apiMysql数据源传入string类型的参数-1sql解析成了列表-1

已解决

DataWorks数据服务apiMysql数据源传入string类型的参数-1sql解析成了列表-1

展开
收起
阿里云服务支持 2022-12-08 16:57:27 246 0
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语法来写语句。

    2022-12-08 17:20:05
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 相关电子书

    更多
    SQL Server在电子商务中的应用与实践 立即下载
    GeoMesa on Spark SQL 立即下载
    原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载

    相关镜像