我想找到一种方法来在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的ID LPAD()
,但这样做的时候,我会使用带前缀的ID :CONCAT("PFX", LPAD(id,4,"0"))
感谢你的帮助
PS:请告诉我我做错了什么,这是我第一次在这里问。
好吧,我对LPAD也有类似的问题,它会将数字截短至其焊盘长度。根据https://dev.mysql.com/doc/refman/8.0/zh-CN/string-functions.html#function_lpad的预期结果。
据我所知,没有人提到可以解决我同样问题的答案:
LPAD(id, GREATEST(LENGTH(id), 4), "0")
它按预期工作。id
用0填充少于4个字符的任何',并返回大于4个字符的不变id
'。
我将答案留给其他人,以后他们会发现这个问题。
正如接受的答案结尾所建议的那样,这就是我最终要做的事情
我提供的解决方案没有任何答案。其他所有人都在使用
SUBSTRING
,CONCAT
或REGEXP_REPLACE
的某种混合形式。我发布了这个答案,所以其他任何找到此问题的人(像我一样)都将很少提供:)我的错,我看错了丹尼尔的答案,你的答案就是我当时想要的