je suit tables dans MySQLscission de chaîne d'identifiants et concat avec des noms dans MySQL
Tableau 1:
c1 ids
A1 3 | 5 | 2
A2 1 | 2
A3 3
A4 1 | 2 | 3 | 4 | 5
A5 2 | 4 | 1 | 3
Tableau 2:
nom identifiant 1 AA
2 ABERT
3 CDE
4 XXWQ
5 Y
Je veux joindre les deux tables sur tb1.ids = tb2.id comme Split tous les id du tableau 1, puis remplacez-les par leur nom et puis concaténer à nouveau.
sortie
3 | 5 | 2 -> CDE | Y | ABERT
1 | 2 -> AA | ABERT
J'utilise le code suivant pour diviser la chaîne.
CASE WHEN tb1.ids LIKE '%|%'THEN SUBSTRING_INDEX(`tb1.ids` , '|', 1) ELSE tb1.ids END AS id1,
CASE WHEN tb1.ids LIKE '%|%|%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(`tb1.ids` , '|', 2),'|',-1) WHEN tb1.ids LIKE '%|%' THEN SUBSTRING_INDEX(`tb1.ids` , '|', -1)ELSE '' END AS id2,
CASE WHEN tb1.ids LIKE '%|%|%|%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(`tb1.ids` , '|', 3),'|',-1) WHEN tb1.ids LIKE '%|%|%' THEN SUBSTRING_INDEX(`tb1.ids` , '|', -1) ELSE '' END AS id3,
CASE WHEN tb1.ids LIKE '%|%|%|%|%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(`tb1.ids` , '|', 4),'|',-1) WHEN tb1.ids LIKE '%|%|%|%' THEN SUBSTRING_INDEX(`tb1.ids` , '|', -1) ELSE '' END AS id4,
CASE WHEN tb1.ids LIKE '%|%|%|%|%|%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(`tb1.ids` , '|', 5),'|',-1) WHEN tb1.ids LIKE '%|%|%|%|%' THEN SUBSTRING_INDEX(`tb1.ids` , '|', -1) ELSE '' END AS id5
Ne jamais stocker plusieurs valeurs dans une seule colonne. Si vous le faites, vous avez des problèmes comme celui-ci. Pouvez-vous changer votre design de table? –
Je n'ai pas d'accès en écriture à cette base de données. En fait, cette colonne est un itinéraire de plusieurs destinations d'un voyage particulier. –