mysql字符串每个字符当作比对条件

1.需求

  • 数据库存储的technology_ids为varchar类型,如"1,2,4,需要将工艺表对应id的名称查询展示
  • 问题点:technology_ids为varchar类型无法直接使用in来比对,"1,2,4"为一个整体

2.使用的mysql函数

  • group_concat():将查询的多条数据转成字符串的一列
    mysql字符串每个字符当作比对条件_第1张图片

  • inStr(a,b)>0;字符串a包含字符串b,并将b的数据进行筛选(like关键字的反向用法);<0则反过来

3.sql语句

SELECT
	t2.`name` AS materialsName,
	group_concat( t3.`name` ) AS technologyNames,
	t1.* 
FROM
	box_cost_discount t1,
	materials t2,
	technology t3 
WHERE
	t1.materials_id = t2.id 
	AND inStr( t1.technology_ids, t3.id )> 0 
GROUP BY
	t1.id

mysql字符串每个字符当作比对条件_第2张图片

4.业务调用返回

  @ApiOperation("分页查询")
    @PostMapping("page")
    public Result<PageResult<BoxCostDiscount>> page(BoxCostDiscount po) {
        return Result.ok(boxCostDiscountService.myPage(po));
    }

 @Override
    public PageResult<BoxCostDiscount> myPage(BoxCostDiscount po) {
        Page<BoxCostDiscount> page = new Page<>(po.getCurrent() == null ? 1 : po.getCurrent(), po.getSize() == null ? 10 : po.getSize());
        page = getBaseMapper().myPage(page);
        return PageResult.of(page);
    }
    
    Page<BoxCostDiscount> myPage(@Param("page") Page<BoxCostDiscount> page);		

你可能感兴趣的:(随笔,mysql,java,数据库)