首页 > 解决方案 > 没有在 mysql 中修整的 LPAD

问题描述

我正在尝试找到一种在 ID 开头添加 0 而不修剪它的方法:

我目前正在使用LPAD(id,4,"0")女巫工作正常,直到9999

我正在寻找一个请求谁做LPAD(id, MAX(LENGTH(id),4), "0")

我找到SELECT IF(LENGTH(12345)>4, 12345, LPAD(12345, 4, "0"));了,但我更喜欢它4在一个地方(以便在其他地方更容易使用)。

编辑 :

ZEROFILL不符合我的需要,因为我也需要没有0s 的 id。我主要使用不带 的 ID LPAD(),但是当我这样做时,我会使用带前缀的 ID:CONCAT("PFX", LPAD(id,4,"0"))

感谢您的帮助

PS:如果我做错了什么,请告诉我,这是我第一次在这里问。

标签: mysql

解决方案


好吧,我对 LPAD 也有类似的问题,它将数字截断为它的焊盘长度。根据https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_lpad这是预期的结果。

据我所知,没有人提到解决我同样问题的答案:

LPAD(id, GREATEST(LENGTH(id), 4), "0")

它按预期工作。用 0填充任何id短于 4 个字符的 ',并返回id长于 4 个字符的未更改 '。

我把我的答案留给其他人,将来会发现这个问题。


推荐阅读