Bem, eu tive um problema semelhante com o LPAD, ele estava truncando o número para o comprimento do bloco. De acordo com https://dev.mysql.com /doc/refman/8.0/en/string-functions.html#function_lpad é resultado esperado.
Tanto quanto posso ver, ninguém mencionou uma resposta que resolveu meu mesmo problema:
LPAD(id, GREATEST(LENGTH(id), 4), "0")
Funciona como esperado. Preenche qualquer
id
é menor que 4 caracteres com 0 e retorna id
inalterado 's com mais de 4 caracteres. Estou deixando minha resposta aqui para outras pessoas, que encontrarão essa pergunta no futuro.