假设categoryId是查询参数值,categoryIdStr是数据库字段,是多个数字中间用逗号隔开
locate函数返回目标字符在匹配字段中出现的位置,结果大于0则为匹配到结果。
如果查询参数categoryId是4,categoryIdStr的值是 2,3,14,15则可以匹配到。
SELECT product_code FROM t_product_base_info where locate(#{categoryId},categoryIdStr)
find_in_set函数会以每个逗号隔开的元素去做等于匹配,如果查询参数categoryId是4,categoryIdStr的值是 2,3,14,15则匹配不到,当查询参数是14时才可以匹配到。
SELECT product_code FROM t_product_base_info where find_in_set(#{categoryId},categoryIdStr)