Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay thế số trong kết quả phân cách dấu phẩy bằng tên tháng trong MySQL

Chuyển đổi số tháng thành tên tháng trong chuỗi CSV với CASE và FIND_IN_SET

Kỹ thuật: Duyệt qua 12 tháng, dùng FIND_IN_SET kiểm tra sự hiện diện, CASE trả về tên tháng, CONCAT gộp chuỗi.

Tạo bảng và dữ liệu

mysql> create table DemoTable1629 ( Month varchar(100) ); 
Query OK, 0 rows affected (0.64 sec)
mysql> insert into DemoTable1629 values('2,4,6'); 
mysql> insert into DemoTable1629 values('1,3,5,12'); 
mysql> insert into DemoTable1629 values('7,8,9,10');

Truy vấn chuyển đổi (rút gọn hiển thị)

mysql> select trim(trailing ',' from concat( 
    CASE WHEN FIND_IN_SET(1, Month) THEN 'January,' ELSE '' END, 
    CASE WHEN FIND_IN_SET(2, Month) THEN 'February,' ELSE '' END, 
    -- ... tiếp tục cho tháng 3 đến 12 
    CASE WHEN FIND_IN_SET(12,Month) THEN 'December,' ELSE '' END 
)) from DemoTable1629;

Kết quả

+------------------------------------------------------------------+ 
| Feburary,April,June                                                | 
| January,March,May,December                                         | 
| July,August,September,October                                      | 
+------------------------------------------------------------------+

Giải thích:

  • FIND_IN_SET(2, '2,4,6') → 1 (tìm thấy) → trả về 'February,'
  • CONCAT nối tất cả kết quả CASE
  • TRIM(TRAILING ',' ...) xóa dấu phẩy thừa ở cuối

⚠️ Cảnh báo: Cách này cồng kềnh, khó bảo trì. Thiết kế tốt hơn: Tách bảng tháng riêng, dùng JOIN. Hoặc lưu JSON array và dùng JSON_TABLE (MySQL 8.0+).

Sửa lỗi chính tả: 'Feburary' → 'February', 'Marh' → 'March' trong code gốc.