最近学习MySQL函数,发现其有转换大小写的函数,但却是对整个字段进行全部的转换,如果需要将字段中首字母大写却没有直接的函数,这对于姓名来说可能有点不方便。这里正好练习了下使用函数实现首字母大写的转换。

修改某字段的内容,使其首字符大写,用于英文姓名

首先解释用到的函数:

 

CONCAT(str1,str2)

字符连接函数

 

UPPER(str)

将字符串改为大写字母

 

LOWER(str)

将字符串改为小写字母

 

LENGTH(str)

判定字符串长度

 

SUBSTRING(str,a,b)

提取字段中的一段,从字符串str的第a位开始提取,提取b个字符

 

LEFT(str,n)

提取字符串最左边的n个字符

 

RIGHT(str,n)

提取字符串最右边的n个字符(该例未用到)

思路:

1、用LEFT单独将首字母取出并用UPPER换成大写

2、确定字段的长度,并用SBUSTRING取出从第二位到最后一位的所有字段备用。

3、用CONCAT连接上边的两个值

4、update表中字段的值即可。

mysql> select ename from emp;

+--------+

| ename  |

+--------+

| zzx    |

| lisa   |

| bjguan |

| dony   |

| bzshen |

+--------+

5 rows in set (0.00 sec)

mysql> update emp set ename=concat(UPPER(left(ename,1)),substring(ename,2,(length(ename)-1)));

Query OK, 5 rows affected (0.00 sec)

Rows matched: 5  Changed: 5  Warnings: 0

mysql> select * from emp;

+--------+------------+---------+--------+

| ename  | hiredate   | sal     | deptno |

+--------+------------+---------+--------+

| Zzx    | 2000-01-01 |  100.00 |      1 |

| Lisa   | 2003-02-01 |  400.00 |      2 |

| Bjguan | 2004-04-02 |  100.00 |      1 |

| Dony   | 2005-02-05 | 2000.00 |      4 |

| Bzshen | 2005-04-01 | 4000.00 |      3 |

+--------+------------+---------+--------+

5 rows in set (0.00 sec)

mysql> update emp set ename=LOWER(ename);

Query OK, 5 rows affected (0.05 sec)

Rows matched: 5  Changed: 5  Warnings: 0

mysql> select * from emp;

+--------+------------+---------+--------+

| ename  | hiredate   | sal     | deptno |

+--------+------------+---------+--------+

| zzx    | 2000-01-01 |  100.00 |      1 |

| lisa   | 2003-02-01 |  400.00 |      2 |

| bjguan | 2004-04-02 |  100.00 |      1 |

| dony   | 2005-02-05 | 2000.00 |      4 |

| bzshen | 2005-04-01 | 4000.00 |      3 |

+--------+------------+---------+--------+

5 rows in set (0.00 sec)