gpt4 book ai didi

mysql - LPAD 在 mysql 中没有修剪

转载 作者:行者123 更新时间:2023-11-29 05:02:44 26 4
gpt4 key购买 nike

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

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

  • 请求:SELECT LPAD(12345,4,"0");
  • 异常结果:12345
  • 结果:1234

我正在寻找执行 LPAD(id, MAX(LENGTH(id),4), "0")

的请求

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

  • 是否有内置函数可以满足我的需求?
  • 或者是否有替代函数 MAX() 的方法可以在这种情况下工作?
  • 还是我应该坚持使用 IF(LENGTH) 解决方案及其缺点?

编辑:

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

感谢您的帮助

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

最佳答案

好吧,我在 LPAD 上遇到了类似的问题,它会将数字截断到它的填充长度。根据https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_lpad这是预期的结果。

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

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

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

我把我的答案留给其他人,他们将来会找到这个问题。

关于mysql - LPAD 在 mysql 中没有修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54909026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com