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

Đảo ngược chuỗi có dấu gạch nối (dash) trong MySQL

Vấn đề với REVERSE() đơn thuần

mysql> SELECT REVERSE('AB-CD-EF');
+---------------------+
| REVERSE('AB-CD-EF') |
+---------------------+
| FE-DC-BA            |
+---------------------+

Kết quả "FE-DC-BA" sai logic (mong muốn: "EF-CD-AB" – đảo thứ tự các đoạn).

Giải pháp: Dùng SUBSTRING_INDEX, INSTR, LOCATE

mysql> SELECT CONCAT(
    SUBSTRING_INDEX('AB-CD-EF','-',-1), '-',
    SUBSTR('AB-CD-EF', INSTR('AB-CD-EF','-')+1, INSTR('AB-CD-EF','-')),
    LEFT('AB-CD-EF', LOCATE('-','AB-CD-EF')-1)
) AS 'Reversed';
+-----------+
| Reversed  |
+-----------+
| EF-CD-AB  |
+-----------+

Tách các đoạn bằng dấu '-', đảo thứ tự, ghép lại.