Γεμίστε μια συμβολοσειρά με μηδενικά στην αρχή, ώστε να έχει μήκος 3 χαρακτήρων στον SQL Server 2008

Έχω μια συμβολοσειρά που έχει μήκος έως και 3 χαρακτήρες όταν δημιουργείται για πρώτη φορά στον SQL Server 2008 R2.

Θα ήθελα να το γεμίσω με αρχικά μηδενικά, έτσι ώστε αν η αρχική του τιμή ήταν '1' τότε η νέα τιμή θα ήταν '001'. Ή αν η αρχική του τιμή ήταν '23' η νέα τιμή είναι '023'. Ή αν η αρχική του τιμή είναι '124' τότε η νέα τιμή είναι η ίδια με την αρχική τιμή.

Χρησιμοποιώ τον SQL Server 2008 R2. Πώς μπορώ να το κάνω αυτό χρησιμοποιώντας την T-SQL;

Λύση

Αν το πεδίο είναι ήδη συμβολοσειρά, αυτό θα λειτουργήσει

 SELECT RIGHT('000'+ISNULL(field,''),3)

Αν θέλετε τα μηδενικά να εμφανίζονται ως '000&#39,

Μπορεί να είναι ένας ακέραιος -- τότε θα θέλατε

 SELECT RIGHT('000'+CAST(field AS VARCHAR(3)),3)

Όπως απαιτείται από την ερώτηση αυτή η απάντηση λειτουργεί μόνο αν το μήκος

Σχόλια (14)

Για όσους θέλουν να ενημερώσουν τα υπάρχοντα δεδομένα τους, εδώ είναι το ερώτημα:

update SomeEventTable set eventTime=RIGHT('00000'+ISNULL(eventTime, ''),5)
Σχόλια (0)

Για ακέραιους αριθμούς μπορείτε να χρησιμοποιήσετε την έμμεση μετατροπή από int σε varchar:

SELECT RIGHT(1000 + field, 3)
Σχόλια (1)