mysql5.7根据编码拼接的值 , 查出来拼接之后的编码名称

系统编码表中存的有编码的数值和编码的名称 , 但是一般存的时候通常存名称 . 但是在给前端显示的时候需要对应值对应的名称.

/**
 * 系统编码
 * @TableName t_sys_code
 */
@TableName(value ="t_sys_code")
@Data
public class SysCode implements Serializable {
    /**
     * 编码ID
     */
    @TableId(value = "code_id",type = IdType.ASSIGN_UUID)
    private String codeId;

    /**
     * 编码类别
     */
    @TableField(value = "code_type")
    private String codeType;

    /**
     * 编码数值
     */
    @TableField(value = "code_number")
    private String codeNumber;

    /**
     * 名称
     */
    @TableField(value = "code_name")
    private String codeName;

	//......

}

编码的值的列表
在这里插入图片描述
数据库中存的格式是 1,3,4,13 需要给前端展示的是 1月,3月,4月,每天
sql如下:

         select t.jczq,
       (
           SELECT GROUP_CONCAT(d.code_name ORDER BY FIND_IN_SET(d.code_number, t.jczq) SEPARATOR ',')
           FROM t_sys_code d
           WHERE
               d.code_type = 'month'
             AND FIND_IN_SET(d.code_number, t.jczq) > 0
       ) AS jczqName,
       t.jcpl,
       (select d.code_name from t_sys_code d where d.code_type = '102' and d.code_number = t.jcpl) AS jcplName -- 如果不是拼接的直接查就行
from t_aqjcjl t
查询结果如下

在这里插入图片描述

关键代码解释

FIND_IN_SET(d.code_number, t.jcpl):判断 code_number 是否存在于逗号分隔的 jcpl 中,并返回其位置。

ORDER BY FIND_IN_SET(…):确保拼接顺序与原字段一致。

GROUP_CONCAT将匹配的 code_name 按原顺序拼接成逗号分隔字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值