Cóż, miałem podobny problem z LPADem, obcinał liczbę do długości pada. Według https://dev.mysql.com /doc/refman/8.0/en/string-functions.html#function_lpad jest to oczekiwany wynik.
O ile widzę, nikt nie wspomniał o odpowiedzi, która rozwiązałaby mój problem:
LPAD(id, GREATEST(LENGTH(id), 4), "0")
Działa zgodnie z oczekiwaniami. Dopełnia dowolny id
jest krótszy niż 4 znaki z 0 i zwraca niezmieniony id
są dłuższe niż 4 znaki.
Zostawiam tutaj swoją odpowiedź dla innych osób, które w przyszłości znajdą to pytanie.