2015-08-25 2 views
-2

J'ai essayé de suivre this et this car j'ai besoin de remplir une colonne avec des zéros.Pad Varchar avec 0 dans SQL Server 2005

J'ai donc un champ

name_id 
1 
2 
21 
74 

Et je veux que ce soit comme

name_id 
001 
002 
021 
074 

J'ai donc essayé de faire ceci:

SELECT RIGHT('000'+ name_id,3) from tblCoordinates; 

Mais le résultat est:

RIGHT('000'+name_id,3) 
1 
2 
21 
74 

J'utilise MySQL Server 2005. Quel est le problème avec une instruction select? Merci

+0

Votre code est correct. Où voyez-vous les valeurs non rembourrées? –

+0

'SELECT '000' + 1' => 1, conversion implicite – lad2025

Répondre

2

Vous devez convertir name_id-VARCHAR premier:

SELECT RIGHT('000' + CONVERT(VARCHAR(3), name_id), 3) from tblCoordinates; 

Si vous utilisez MySQL, il y a une fonction intégrée LPAD()

SELECT LPAD(name_id, 3, '0') from tblCoordinates; 
+0

si je fais cela, je reçois cette erreur: Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'name_id), 3) à partir de tblCoordinates' à la ligne 1 – user3201441

+0

Essayez d'utiliser 'CAST' à la place. –

+0

dois-je encore convertir le name_id en varchar même si le type de données est déjà varchar? – user3201441

0

SELECT '000' + '1' => 1 Pour concaténation utiliser CONCAT()

SELECT RIGHT(CONCAT('000',name_id),3) 
FROM tblCoordinates; 
+0

ayant une erreur Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'NVARCHAR (10)), 3)' à la ligne 1. Encore une fois j'utilise la version 2005 de MySql – user3201441

+0

Vous utilisez MySQL et vous étiquetez la question comme sql- serveur. – lad2025

+0

avec ce code, la valeur de name_id est tous 0 – user3201441