解读一下这个题目
说是修改,实际上不是update操作,有一个select语句配合函数就可以解决
对name字段的第一个字母大写,其余小写
select user_id,concat(upper(left(name,1)),lower(right(name,length(name)-1))) as name
from Users
order by user_id
看着挺复杂是吧,一个套一个的,主要聚焦在select后面跟随的部分
主要是这块,通过这个函数就可以完成对name字段的操作
concat(upper(left(name,1)),lower(right(name,length(name)-1)))
● CONCAT 用来拼接字符串 ,如果没有这个,字符串就无法拼接,升完大小写就变一个了,可以完成多个字段的拼接
CONCAT (字段1,字段2,字段3,..........)
● LEFT 从左边截取字符 ,从左往右截取。left(col_name, length) 函数:col_name是列名(必选),length是从左往右截取的长度(为正整数,如果为负数则什么也没返回,下标从1开始,不是0)
left(字段名, 要截取的长度)
● RIGHT 从右边截取字符,参考LEFT函数,right(col_name, length) 函数: 从右往左截取。col_name是列名(必选),length是从右往左截取的长度(必须 为正整数,如果为负数则什么也没返回 下标从1开始,不是0)
right(字段名, 要截取的长度)
● UPPER 变为大写 MySQL 中字母大写转换函数 UPPER(str) 可以将字符串 str 中的字母字符全部转换成大写。无论之前字段里有几个大写,全部一次性变成大写
● LOWER 变为小写 和上面的upper一样,无论里面是什么一律变成小写
● LENGTH 获取字符串长度 Length(字符串) 自动返回字符串长度
再回来看看这个SQL
concat(upper(left(name,1)),lower(right(name,length(name)-1)))
翻译一下
拼接两个字符串(变大写(从最左边开始截取(name字段,截取一个)),变小写(从最右边开始截取(name字段,name字段的长度-1))
补充一个函数
● substring(str,index,len) 截取str,从index开始,截取len长度
● substring_index(str,delim,count),str是要截取的字符串,delim是截取的字段count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的