Webman a écrit a écrit :
Salut,
Je voudrais savoir si il est possible a partir d'une requete SQL de couper un champ en deux...:crazy: je m'explique...j'ai une base de données de mes MP3 qui possède un champ fichier. Je voudrais transformer ce champs en deux champs (artiste et chanson). Sachant que dans le champs fichier le texte est "formaté" de la manière suivante "artiste - chanson", il me faudrait donc une requête qui place artiste dans un champ artiste et chanson dans un champ chanson.
Alors selon vous c'est possible ? et si oui comment ?
|
Tu pourrais efectivement faire ca avec des regexps , c'est assez simple en fait, mais faut faire une boucle sur chaque élément du résultat puis remettre le résultat dans la base de données.
Essaie ça pour voir (tout en un dans une requête) :
UPDATE liste_mp3
SET artiste=SUBSTRING_INDEX(nom_fichier, ' - ', 1), chanson=SUBSTRING_INDEX(nom_fichier, ' - ', -1)
Tu l'auras compris, le nom du fichier se trouve dans le champ nom_fichier, le nom de l'artiste dans le champ artiste et le nom de la chanson dans le champ chanson.
SUBSTRING sort de la doc MySQL mais j'espère (pour toi ?) que ça marche aussi sous SQL.
Voici la doc de SUBSTRING :
SUBSTRING_INDEX(str,delim,count)
Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned:
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> select SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
This function is multi-byte safe.