JsonArrayAny生成sql不正确。 返回

SqlSugar 沟通中
6 179

版本:5.1.4.188

image.png


SELECT `m`.* FROM `rule_main` `m` Left JOIN `rule_condition` `c` ON ( `m`.`Id` = `c`.`PId` )    WHERE (( `m`.`IsDelete` = 0 ) AND ( `c`.`IsDelete` = 0 ))  AND (( `c`.`ClassCondition` = 4 ) AND  JSON_CONTAINS(`c`.`ConditionValue`, '"System.Int32[]"'))  ORDER BY `m`.`CreateTime` DESC LIMIT 0,20


转Json会是:JSON_CONTAINS(`c`.`ConditionValue`, '"[7]"'))


热忱回答6

  • 补充下数据集如下,查询条件是动态的数组

    [7]

    [7,10]

    [7,10,30]


    0 回复
  • https://www.donet5.com/Home/Doc?typeId=2366

    按提问模版写个可以重现的DEMO

    0 回复
  • JSON_CONTAINS(`c`.`ConditionValue`, '"System.Int32[]"')) 正常不会生成这个SQL

    0 回复
  • jsonarray(第一个参数是json字段,第二个参数是value) ,你这个看起来是反的。 第二个参数反而是个数组

    0 回复
  •  所以你可能要改成这样


      && sClassId.Contains(c.xxxValue)

    0 回复
  • 我看来了看MysqlSql的JSON:JSON_OVERLAPS与JSON_CONTAINS(c.ConditionValue, '[7,8]'),是支持数组数据查询的。

    [7]

    [7,10]

    [8,30]

    期初想着存数组方便,下次注意我注意,再按【提问模版】提问。



    0 回复