Bene, ho avuto un problema simile con LPAD, stava troncando il numero sulla lunghezza del pad. Secondo https://dev.mysql.com /doc/refman/8.0/en/string-functions.html#function_lpad è il risultato atteso.
Per quanto posso vedere, nessuno ha menzionato la risposta che ha risolto il mio stesso problema:
LPAD(id, GREATEST(LENGTH(id), 4), "0")
Funziona come previsto. Riempie qualsiasi id
è inferiore a 4 caratteri con 0 e restituisce id
invariato ' che sono più lunghi di 4 caratteri.
Lascio qui la mia risposta ad altre persone, che troveranno questa domanda in futuro.