MySQL数据库查询字符串数据格式之不足自动填充“0”字符以达到指定位数
在MySQL数据库中,很多时候我们的数据会跟我们想要的输出结果有出入。
例如在数据库中,如果我们保存的是1,但是我们需要他输出显示的是001,那就需要我们在数据1的前面多加几个0;
又或者是我们需要输出显示的是100,那就需要在数据1的后面多加几个0。
如图:
例如我们需要查询这个表里的id字段,同时我们要求输出的格式为001,002。
对于我们正常不做任何操作的SQL语句来说,我们只能查询到的格式为1,2,3。
SELECT `id`,`name`,`age` FROM `student`
那么怎么能把数据改成我们想要的位数呢?我们需要用到LPAD()函数跟RPAD()函数。
先来看看这个两个函数的定义跟简单使用:
LPAD(str,len,padstr)
返回字符串str,左填充用字符串padstr填补到len字符长度。 如果str为大于len长,返回值被缩短至len个字符(即,不能超过 len 长)。
LPAD(字段名, 长度, “填充字符”) : 左填充 0001, 0002。
mysql> SELECT LPAD('hi',4,'??');
+---------------------------------------------------------+
| LPAD('hi',4,'??') |
+---------------------------------------------------------+
| ??hi |
+---------------------------------------------------------+
1 row in set (0.00 sec)
RPAD(str,len,padstr)
返回字符串str,右补齐字符串 padstr 填补到len字符长度。如果 str 的长度大于len,返回值被缩短至 len 个字符。
RPAD(字段名, 长度, “填充字符”) : 右填充 1000, 2000。
mysql> SELECT RPAD('hi',5,'?');
+---------------------------------------------------------+
| RPAD('hi',5,'?') |
+---------------------------------------------------------+
| hi??? |
+---------------------------------------------------------+
1 row in set (0.00 sec)
OK,看完定义回到刚刚的问题,现在去修改我们的SQL语句!
SELECT LPAD(`id`,3,0) as id,`name`,`age` FROM `student`
效果如图:
同时试一下换成100,200格式的:
SELECT RPAD(`id`,3,0) as id,`name`,`age` FROM `student`
效果如图:
搞定啦!!!!