SQL Server Come lasciare a sinistra un numero con zero

La funzione T-SQL replicata in SQL Server di Microsoft semplifica l'aggiunta di zeri iniziali a un valore numerico.

Creiamo un tavolo 'emp' con EmpID e stipendio colonne.

creare tabella emp (empid int, salary int);


Inserisci alcuni dati di esempio nella tabella 'emp'.

inserire in valori emp (1.300); inserire in valori emp (2,30); inserire in valori emp (3.500.000); inserire in valori emp (4,1000);
seleziona * da emp; salario empid ----------- ----------- 1 300 2 30 3 500000 4 1000 (4 righe (s) interessate)


Ora, lasciamo il pad sinistro stipendio colonna con 0s.

Se non sappiamo quanti 0 abbiamo bisogno di pad a sinistra in modo che tutti i valori siano di uguale lunghezza, possiamo trovare la lunghezza massima di stipendio colonna usando la seguente query:

SELEZIONA Max (mylength) FROM (SELECT Len (salary) AS mylength FROM emp) x; ----------- 6

La query restituisce un valore di 6, che è la lunghezza massima in stipendio colonna a causa di Empid 3 con 500000 stipendio.

Ora per aggiungere gli zeri iniziali al stipendio colonna, possiamo usare la funzione di stringa incorporata di replica in T-SQL.

Sintassi:

replicare (espressione di stringhe, espressione intera);


SQL Server 2008: La query seguente lascerà la colonna salariale con 0s.

selezionare empid, replicare ('0', 6 - len (stipendio)) + cast (stipendio come varchar) come salario da emp; Stipendio empatico ----------- ----------- 1 000300 2 000030 3 500000 4 001000 (4 righe interessate)


Nella query della versione di SQL Server 2008, il primo parametro è la stringa di riempimento "0". Nel secondo parametro stiamo sottraendo la lunghezza di stipendio colonna da 6 che è la nostra lunghezza massima. Quindi, la nostra espressione sa quanti 0 sono necessari per lasciare il pad e concatenare il stipendio colonna.

Con SQL Server 2012 è possibile ottenere lo stesso risultato con un semplice codice a una riga utilizzando la funzione FORMAT.

SQL Server 2012: Colonna salariale pad sinistro con 0 s

SELEZIONA FORMATO (salario, '000000') da emp; Stipendio empatico ----------- ----------- 1 000300 2 000030 3 500000 4 001000 (4 righe interessate)