2009-08-02 9 views
2

J'ai environ quelques milliers de lignes avec qui contiennent 3 chiffres commençant par 100 et allant jusqu'à 199 dont j'ai besoin de préfixer avec 0. Il y a aussi des milliers d'autres chiffres 4 chiffres chiffres aussi bien que je ne veux pas changer.MySQL ajouter, préfixer une série de nombres avec 0

J'ai besoin de trouver tous les nombres de 3 chiffres dans la gamme et préfixer seulement ceux de 100 -199 avec un 0 de sorte qu'ils sont 4 chiffres par exemple 100> 0100, 104> 0104 et ainsi de suite. Aussi ces numéros peuvent par exemple, par exemple, 110 est 124.

Y at-il un moyen que je peux le faire en utilisant SQL? comme je n'ai pas envie de les changer manuellement!

Merci beaucoup

+0

Existe-t-il un langage de script que vous utilisez? –

+0

Im en utilisant PHP5 et en utilisant MySQL Front. – gus

+0

Vérifiez que le champ est un CHAR, en ajoutant un zéro à gauche d'un nombre et en l'enregistrant à la DB ne le retirera plus (les numéros ne commencent pas par un zéro) –

Répondre

6

Ceci est mieux fait avec un langage de programmation. Cela dit, voici une requête SQL qui mettra à jour tous les numéros existants:

UPDATE tableName SET fieldName = right(concat('0000',fieldName), 4) WHERE length(fieldName) < 4 
+0

Merci cpharmston, vous penserait à regarder que cela remplacerait tout <4 avec 0000. Mais il ne conserve pas le nombre d'origine et fonctionne très bien - merci, vous m'avez sauvé beaucoup de temps. À votre santé. – gus

6

La fonction LPAD est ce que vous recherchez. Vous pouvez l'utiliser dans votre requête pour remplir les chiffres à la volée.

SELECT LPAD(CONVERT(num AS CHAR), 4, '0') FROM tbl WHERE num > 99 AND num < 200 

Si vous préférez faire du côté de script, str_pad va faire la même chose en php.

+0

Merci Dane the Sane. Je vais essayer aussi, mais ce qui précède semble fonctionner. – gus

+0

Merci. Ça marche. –

Questions connexes