mysql转大写转小写,字串转换

我有一字串
APPLE
我要将其转成Apple
也就是第一个字母是大写,其他是小写
用lower的话,就是所有变小写

再来较困难的是 I AM A TEACHER->I Am A Teacher
每一个开头字母是大写
这个有办法实现吗?

8个回答

SELECT CONCAT(SUBSTR(UPPER('admin'),1,1),SUBSTR(LOWER('admin'),2)) ds FROM DUAL;

LzbcitL
LzbcitL 回复weixin_40187983: 这个用函数可以,楼下已经给出来了,直接粘贴到mysql里执行就可以了
大约 2 年之前 回复
qq_39997741
qq_1044123649 SELECT CONCAT(SUBSTR(UPPER('admin'),1,1),SUBSTR(LOWER('admin'),2)) ds FROM DUAL;
大约 2 年之前 回复
weixin_40187983
weixin_40187983 这个方法很不错了! 如果是要将 APPLE IS YOUR->Apple Is Your 这应该比较难了吧
大约 2 年之前 回复

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 ;


LzbcitL
LzbcitL 回复weixin_40187983: 直接粘贴到mysql里执行就可以了
大约 2 年之前 回复
yangzhi81
深深蓝81 先用LOWER全部转成小写,再用INITCAP函数把单词的首字母转成大写
大约 2 年之前 回复
weixin_40187983
weixin_40187983 这是C#语法吗? 我这段要加在那呢?
大约 2 年之前 回复

INITCAP:转换每个字的第一个字符为大写
LOWER:转换所有字符为小写
UPPER:转换所有字符为人写

weixin_40187983
weixin_40187983 INITCAP在mysql不能用耶
大约 2 年之前 回复

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:转换每个字的第一个字符为大写

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐