Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 11h19   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 57
Points : 13
Points : 13
Par défaut Requête SQL complexe Additionner nombre dans un champ texte

Bonjour,

J'aimerais modifier toutes les valeurs numériques dans un champ texte.
Le champ est un texte contenant de temps en temps des <b>#00564</b>. Pour ces types de numéro #00564, j'aimerais qu'il soit tous additionné de 10 000?

Exemple :
"Il était une fois le numéro #00564 bla bla."

Il faudrait que tous les nombres de type #00564 soit additionnés de 10 000.
#00564 deviendrait #10564.

Ce champ se nomme "Description" et est présent dans la table "voiture".


Cordialement,
spaukensen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h37   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
Exemple :
"Il était une fois le numéro #00564 bla bla."
Si tous ces libellés ne contiennent qu'une seule fois la structure "#00564" à modifier, tu dois jouer avec les fonctions de chaîne de caractères.

Il faut localiser la position (POSITION) du caractère # puis convertir (CAST) le morceau composé des 5 caractères suivant cette position en UNSIGNED, lui ajouter 10000, reconvertir en chaîne de caractère et remplacer (REPLACE) la chaîne existante.

Essaie tout seul en commençant hors de la table avec un exemple.

Je te donne le début :
Code :
SELECT POSITION('#' IN 'Il était une fois le numéro #00564 bla bla.')
=> Donne la position du #

Puis tu complètes progressivement la requête en vérifiant le résultat à chaque fois :
Code :
SELECT SUBSTRING('Il était une fois le numéro #00564 bla bla.' FROM POSITION('#' IN 'Il était une fois le numéro #00564 bla bla.') + 1 FOR 5)
=> Devrait donner la chaîne '00564'

Bon courage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h06.


 
 
 
 
Partenaires

Hébergement Web