MySQL为字段前面加一位0
Mysql中有个字段应该是2位字符串,从csv文件导入的时候,前面的0被自动去掉,需要手工加上去,否则在排序的时候,会出现一些问题。
一、未修改前
查询数据库内容如下,01-->1,不方便分组和排序
MariaDB [hbgk]> SELECT c_code,s_code,c_name,grade,class,sub_limit,score,year FROM score_1130 WHERE c_name
="武汉科技大学" ORDER BY c_code,s_code,year;
+--------+--------+--------------------+--------+--------+-----------+-------+------+
| c_code | s_code | c_name | grade | class | sub_limit | score | year |
+--------+--------+--------------------+--------+--------+-----------+-------+------+
| C102 | 01 | 武汉科技大学 | 本科 | 历史 | 不限 | 587 | 2021 |
| C102 | 02 | 武汉科技大学 | 本科 | 物理 | 不限 | 587 | 2021 |
| C102 | 03 | 武汉科技大学 | 本科 | 物理 | 不限 | 581 | 2021 |
| C102 | 04 | 武汉科技大学 | 本科 | 物理 | 不限 | 574 | 2021 |
| C102 | 05 | 武汉科技大学 | 本科 | 物理 | 不限 | 573 | 2021 |
| C102 | 06 | 武汉科技大学 | 本科 | 物理 | 不限 | 554 | 2021 |
| C102 | 07 | 武汉科技大学 | 本科 | 物理 | 不限 | 558 | 2021 |
| C102 | 08 | 武汉科技大学 | 本科 | 物理 | 不限 | 572 | 2021 |
| C102 | 09 | 武汉科技大学 | 本科 | 物理 | 化 | 567 | 2021 |
| C102 | 1 | 武汉科技大学 | 本科 | 历史 | 不限 | 558 | 2022 |
| C102 | 1 | 武汉科技大学 | 本科 | 历史 | 不限 | 564 | 2023 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 572 | 2021 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 550 | 2022 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 578 | 2023 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 568 | 2021 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 544 | 2022 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 569 | 2023 |
| C102 | 2 | 武汉科技大学 | 本科 | 物理 | 不限 | 566 | 2022 |
| C102 | 2 | 武汉科技大学 | 本科 | 物理 | 不限 | 596 | 2023 |
| C102 | 3 | 武汉科技大学 | 本科 | 物理 | 不限 | 561 | 2022 |
| C102 | 3 | 武汉科技大学 | 本科 | 物理 | 不限 | 589 | 2023 |
| C102 | 4 | 武汉科技大学 | 本科 | 物理 | 不限 | 551 | 2022 |
| C102 | 4 | 武汉科技大学 | 本科 | 物理 | 不限 | 580 | 2023 |
| C102 | 5 | 武汉科技大学 | 本科 | 物理 | 不限 | 546 | 2022 |
| C102 | 5 | 武汉科技大学 | 本科 | 物理 | 不限 | 563 | 2023 |
| C102 | 6 | 武汉科技大学 | 本科 | 物理 | 不限 | 539 | 2022 |
| C102 | 6 | 武汉科技大学 | 本科 | 物理 | 不限 | 566 | 2023 |
| C102 | 7 | 武汉科技大学 | 本科 | 物理 | 不限 | 536 | 2022 |
| C102 | 7 | 武汉科技大学 | 本科 | 物理 | 不限 | 564 | 2023 |
| C102 | 8 | 武汉科技大学 | 本科 | 物理 | 不限 | 550 | 2022 |
| C102 | 8 | 武汉科技大学 | 本科 | 物理 | 不限 | 577 | 2023 |
| C102 | 9 | 武汉科技大学 | 本科 | 物理 | 化 | 545 | 2022 |
| C102 | 9 | 武汉科技大学 | 本科 | 物理 | 化 | 573 | 2023 |
+--------+--------+--------------------+--------+--------+-----------+-------+------+
二、修改后
手工在只有一位字符的前面加一个0,再次查询内容如下:
MariaDB [hbgk]> SELECT c_code,s_code,c_name,grade,class,sub_limit,score,year FROM score WHERE c_name="武汉科技大学" ORDER BY c_code,s_code,year;
+--------+--------+--------------------+--------+--------+-----------+-------+------+
| c_code | s_code | c_name | grade | class | sub_limit | score | year |
+--------+--------+--------------------+--------+--------+-----------+-------+------+
| C102 | 01 | 武汉科技大学 | 本科 | 历史 | 不限 | 587 | 2021 |
| C102 | 01 | 武汉科技大学 | 本科 | 历史 | 不限 | 558 | 2022 |
| C102 | 01 | 武汉科技大学 | 本科 | 历史 | 不限 | 564 | 2023 |
| C102 | 02 | 武汉科技大学 | 本科 | 物理 | 不限 | 587 | 2021 |
| C102 | 02 | 武汉科技大学 | 本科 | 物理 | 不限 | 566 | 2022 |
| C102 | 02 | 武汉科技大学 | 本科 | 物理 | 不限 | 596 | 2023 |
| C102 | 03 | 武汉科技大学 | 本科 | 物理 | 不限 | 581 | 2021 |
| C102 | 03 | 武汉科技大学 | 本科 | 物理 | 不限 | 561 | 2022 |
| C102 | 03 | 武汉科技大学 | 本科 | 物理 | 不限 | 589 | 2023 |
| C102 | 04 | 武汉科技大学 | 本科 | 物理 | 不限 | 574 | 2021 |
| C102 | 04 | 武汉科技大学 | 本科 | 物理 | 不限 | 551 | 2022 |
| C102 | 04 | 武汉科技大学 | 本科 | 物理 | 不限 | 580 | 2023 |
| C102 | 05 | 武汉科技大学 | 本科 | 物理 | 不限 | 573 | 2021 |
| C102 | 05 | 武汉科技大学 | 本科 | 物理 | 不限 | 546 | 2022 |
| C102 | 05 | 武汉科技大学 | 本科 | 物理 | 不限 | 563 | 2023 |
| C102 | 06 | 武汉科技大学 | 本科 | 物理 | 不限 | 554 | 2021 |
| C102 | 06 | 武汉科技大学 | 本科 | 物理 | 不限 | 539 | 2022 |
| C102 | 06 | 武汉科技大学 | 本科 | 物理 | 不限 | 566 | 2023 |
| C102 | 07 | 武汉科技大学 | 本科 | 物理 | 不限 | 558 | 2021 |
| C102 | 07 | 武汉科技大学 | 本科 | 物理 | 不限 | 536 | 2022 |
| C102 | 07 | 武汉科技大学 | 本科 | 物理 | 不限 | 564 | 2023 |
| C102 | 08 | 武汉科技大学 | 本科 | 物理 | 不限 | 572 | 2021 |
| C102 | 08 | 武汉科技大学 | 本科 | 物理 | 不限 | 550 | 2022 |
| C102 | 08 | 武汉科技大学 | 本科 | 物理 | 不限 | 577 | 2023 |
| C102 | 09 | 武汉科技大学 | 本科 | 物理 | 化 | 567 | 2021 |
| C102 | 09 | 武汉科技大学 | 本科 | 物理 | 化 | 545 | 2022 |
| C102 | 09 | 武汉科技大学 | 本科 | 物理 | 化 | 573 | 2023 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 572 | 2021 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 550 | 2022 |
| C102 | 10 | 武汉科技大学 | 本科 | 物理 | 化或生 | 578 | 2023 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 568 | 2021 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 544 | 2022 |
| C102 | 11 | 武汉科技大学 | 本科 | 物理 | 化或地 | 569 | 2023 |
+--------+--------+--------------------+--------+--------+-----------+-------+------+
三、操作记录
UPDATE score SET s_code=LPAD(s_code,2,'0') WHERE CHAR_LENGTH(s_code)=1
- LPAD(str,len,padstr) 参数解释:
- str:要进行填充的字符串;
- len:填充后字符串的长度;
- padstr:用于填充的字符。
- length()、char_length()的区别
- length(): 单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。
- char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符。