2015-05-27 11 views
5

Come rimuovere solo il primo carattere 0 da un varchar?Rimuovere il primo 0 iniziale da varchar con MSSQL

Per esempio '000.303' ==> '00303'

ho provato questo senza successo, tutti i 0 caratteri vengono rimossi:

SELECT SUBSTRING('000303', PATINDEX('%[^0]%', '000303'),LEN('000303')); 

Grazie

risposta

6

provare a utilizzare STUFF Funzione

SELECT CASE WHEN LEFT('000303',1) = '0' THEN STUFF('000303',1,1,'') ELSE '000303' END 

o Utilizzare RIGHT Funzione

SELECT CASE WHEN LEFT('000303',1) = '0' THEN RIGHT('000303', LEN('000303')-1) ELSE '000303' END 

Invece di LEFT('000303',1) = '0'controllo è anche possibile utilizzare

charindex('0','000303') = 1 o

'000303' LIKE '0%'(suggerimento ughai)

+1

visto questa domanda e di pensiero, 'STUFF' si adatta perfettamente qui e poi ha visto la vostra risposta. :). beh potresti anche usare ''000303' LIKE '0%'' se stai cercando alternative a 'LEFT ('000303', 1) = '0'' – ughai

+0

@ughai - Grazie amico aggiornato. –

+0

Grazie, esplorerò la funzione STUFF. – Maxime

1

Prova questa:

SELECT RIGHT(MyColumn, LEN(MyColumn) - 1) 

Questo rimuoverà il primo carattere dalla colonna varchar.

Se è specifico per 0 quindi provare questo:

SELECT CASE WHEN LEFT(MyColumn,1) = '0' 
    THEN RIGHT(MyColumn, LEN(MyColumn) - 1) 
    ELSE 
    MyColumn END 
+1

La cura di Downfer è un commento! –

+4

Prima una striscia sempre il primo carattere, la seconda restituisce NULL se la colonna non inizia con '0' –

+0

Quando ho visto la risposta originale, prima che fosse modificata ninja, diceva solo "Prova questo: SELECT RIGHT (MyColumn, LEN (MyColumn) - 1) Questo rimuoverà il primo carattere dalla colonna varchar ", che è una risposta incompleta. La modifica ninja non è un miglioramento, per le ragioni che JamesZ ha affermato. – LittleBobbyTables

0

Qualcosa di simile

SELECT CASE WHEN LEFT(Mycol,1) = '0' THEN SUBSTRING(MyCOL, 2, LEN(MyCOL)) END 
Problemi correlati