J'ai analysé des données avec des traits d'union. L'exemple ci-dessous utilise une chaîne de texte fixe à démontrer, il suffit de modifier les références aux noms de colonnes pertinents dans la table. J'ai joué pendant des lustres avec un moyen de m'assurer qu'il fonctionnait sur des codes avec un nombre variable de composants et à la fin j'ai décidé d'ajouter la clause where. La plupart des données que vous essayez d'analyser comporteraient un nombre fixe de colonnes.
select
SUBSTRING_INDEX(TS,"-",1) as "1",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",2)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",2)))-1)) as "2",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",3)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",3)))-1)) as "3",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",4)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",4)))-1)) as "4",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",5)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",5)))-1)) as "5",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",6)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",6)))-1)) as "6",reverse(left(reverse(SUBSTRING_INDEX(TS,"-",7)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",7)))-1)) as "7",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",8)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",8)))-1)) as "8",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",9)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",9)))-1)) as "9",
reverse(left(reverse(SUBSTRING_INDEX(TS,"-",10)),locate("-",reverse(SUBSTRING_INDEX(TS,"-",10)))-1)) as "10"
from (select "aaa-bbb-ccc-ddd-eee-fff-ggg-hhh-iii-jjj" as TS) as S
where (LENGTH(TS)-LENGTH(REPLACE(TS,'-',''))) =9
Ok, pouvez-vous être plus précis? –
Mais l'idée avec Regex est géniale –
Selon le lien, seules les réponses ne sont pas de bonnes pratiques. Je sais que c'est vieux mais je voulais quand même laisser ce commentaire dans l'espoir que tu reviendrais et que tu améliorerais cette réponse. D'autant plus que suivre ces deux liens ne dit pas immédiatement comment l'appliquer au problème, ils ne sont donc pas vraiment des bons liens pour répondre eux-mêmes à la question. (pour la discussion des réponses de lien seulement voir http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) – Chris