MySQL 使用记录之多个内容数字转换为对应的汉字使用‘,’分割

50 阅读1分钟

如果遇到某个表中的字段存着‘1,2,3,4’这种数字,要把他转为对应的汉字应该怎么处理呢

可以使用数据库自带函数解决这个问题,使用FIND_IN_SET函数

表结构:
假如有个用户表,里面包含用户以及用户拥有的书籍ID
CREATE TABLE work_business_users(
    id INT NOT NULL AUTO_INCREMENT,
    user_no VARCHAR(255),
    user_name VARCHAR(255),
    create_time timestamp(0),
    books_id VARCHAR(255),
    PRIMARY KEY (id)
);

image.png

书籍表
CREATE TABLE work_business_books (
    id INT NOT NULL AUTO_INCREMENT ,
		book_id VARCHAR(255),
		book_name VARCHAR(255),
    create_time timestamp(0),
		PRIMARY KEY (id)
);

image.png

最终实现的SQL语句
SELECT
	bu.id,
	bu.user_no,
	bu.user_name,
	bu.books_id,
	GROUP_CONCAT( bb.book_name ORDER BY FIELD( bb.book_id, 1, 2, 3, 4, 5 ) SEPARATOR ', ' ) AS book_name 
FROM
	work_business_users bu
	LEFT JOIN work_business_books bb ON FIND_IN_SET( bb.book_id, bu.books_id ) 
GROUP BY
	bu.id,
	bu.user_no,
	bu.user_name,
	bu.books_id
在这条查询语句中,我们使用了FIND_IN_SET函数来检查books_id字段中是否包含书籍表中的book_id值,然后使用GROUP_CONCAT函数将匹配的书籍名连接在一起。
效果

image.png