mysql - 没有在 mysql 中修整的 LPAD
问题描述
我正在尝试找到一种在 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
s 的 id。我主要使用不带 的 ID LPAD()
,但是当我这样做时,我会使用带前缀的 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填充任何id
短于 4 个字符的 ',并返回id
长于 4 个字符的未更改 '。
我把我的答案留给其他人,将来会发现这个问题。
推荐阅读
- html - 边距/填充位于 div 之外
- python - 即使 while 循环被评估为假,语句仍在运行?
- scala - 如何在方法中将对象作为参数传递?
- javascript - 我如何存储 Object.keys?
- igraph - igraph :为社区之间的边缘添加形状
- angular - 角垫按钮链接到外部网址
- wpf - 用户控件内的wpf弹出窗口,按钮不响应事件或命令
- python-2.7 - 函数只接收来自 logservice.fetch() 的一条日志
- ubuntu - 无法弄清楚为什么 Tensorflow-GPU 不使用我的 GPU 以及为什么它显示 N instaed of Y 作为输出
- python - 使用python从PDF中提取扫描页面