我有一字串
APPLE
我要将其转成Apple
也就是第一个字母是大写,其他是小写
用lower的话,就是所有变小写
再来较困难的是 I AM A TEACHER->I Am A Teacher
每一个开头字母是大写
这个有办法实现吗?
SELECT CONCAT(SUBSTR(UPPER('admin'),1,1),SUBSTR(LOWER('admin'),2)) ds FROM DUAL;
INITCAP:转换每个字的第一个字符为大写
LOWER:转换所有字符为小写
UPPER:转换所有字符为人写
mysql没有这个函数,oracle有。
可以用存储过程扩展
delimiter //
drop function initcap//
create function initcap(ss varchar(1000)) returns varchar(1000)
begin
declare lena int;
declare pos int;
declare firsta char(1);
declare seconda varchar(999);
declare tmpstr varchar(1000);
declare retstr varchar(1000);
if (length(trim(ss)) = 0) then
return '';
end if;
if (right(ss,1) != ' ') then
set ss=concat(ss,' ');
end if;
set pos=instr(ss,' ');
set lena=length(ss);
while (pos > 0) do
set tmpstr=trim(left(ss,pos));
set ss = right(ss,lena - pos );
set lena = length(tmpstr);
set firsta = upper(left(tmpstr,1));
set seconda = lower(right(tmpstr,lena - 1));
if (length(retstr) > 0) then
set retstr = concat(retstr,' ',firsta,seconda);
else
set retstr = concat(firsta,seconda);
end if;
set pos = instr(ss,' ');
set lena = length(ss);
end while;
return retstr;
end;
//
delimiter ;
INITCAP:转换每个字的第一个字符为大写
LOWER:转换所有字符为小写
LOWER
UPPER
大小写(英文意思)
INITCAP转化第一个英文首字母为大写
MySQL 字符串大小写转化函数有两对: lower(), uppper() 和 lcase(), ucase()
mysql> select lower('DDD');
+--------------+
| lower('DDD') |
+--------------+
| ddd |
+--------------+
mysql> select upper('ddd');
+--------------+
| upper('ddd') |
+--------------+
| DDD |
+--------------+
mysql> select lcase('DDD');
+--------------+
| lcase('DDD') |
+--------------+
| ddd |
+--------------+
mysql> select ucase('ddd');
+--------------+
| ucase('ddd') |
+--------------+
| DDD |
+--------------+
通常情况下,我选择 lower(), upper() 来转换字符串大小写,因为这和其他数据库中函数相兼容。
自己写个函数吧,没几行的。
逐个读出来,判断是否首字母,是的话转一下。
UPPER:转换所有字符为大写
LOWER:转换所有字符为小写
INITCAP:转换每个字的第一个字符为大写