UPDATE tb_Company SET CompanyIndustry=UPPER(左(CompanyIndustry,1)) +SUBSTRING(公司行业,2,LEN(公司行业))
14答案
更新tb_Company SET CompanyIndustry=CONCAT(UCASE(左(CompanyIndustry,1)), SUBSTRING(CompanyIndustry,2));
更新tb_Company SET CompanyIndustry=CONCAT(UCASE(左(CompanyIndustry,1)), LCASE(SUBSTRING(CompanyIndustry,2));
更新表名 SET column_name=UC_Word(column_name)
DELIMITER公司|| CREATE FUNCTION`UC_Words`(str VARCHAR(255))返回VARCHAR(255”)CHARSET utf8 DETERMINISTIC 开始 声明c CHAR(1); 宣言的VARCHAR(255); 国际默认声明1; 声明bool INT默认值1; 声明穿孔字符(17)默认值'()[]{},.-_!@;:?/'; 集合s=LCASE(str); 当i<长度(str)DO时 开始 集合c=子字符串(s,i,1); 如果位置(c,punt)>0,则 设置bool=1; ELSEIF bool=1然后 开始 如果c>=“a”和c<=“z”,则 开始 集合s=CONCAT(左(s,i-1),UCASE(c),子串(s,i+1)); 设置bool=0; 结束; ELSEIF c>='0'和c<='9'然后 设置bool=0; 结束条件:; 结束; 结束条件:; 设置i=i+1; 结束; 结束时; 回报; 结束|| DELIMITER公司;
-
4 -
@ManuelDallaLana实际上你可能会出错 操作“concat”的排序规则混合非法 所以我认为只需修复字符集或删除它并将其设置为默认值即可。 评论 2018年8月19日9:30 -
@Alejandro这个答案将字符串中每个单词的第一个字母大写。问题和接受的答案只将字符串中的第一个字符大写。它们都是非常有用的答案,但适用于不同的用例。 – 利亚姆 评论 2019年12月5日20:24 -
出现错误,必须使用字符集“declare s VARCHAR(255)charset utf8;”声明's',否则会丢失一些字符。 无论如何,感谢您提供此解决方案:-) – 杰罗姆·亨利 评论 2019年12月23日15:42 -
1
从名称中选择CONCAT(UCASE(MID(name,1,1)),MID(name,2))作为名称;
mysql>SELECT schedule_type AS schedule FROM ad_campaign limit 1; +----------+ |时间表| +----------+ |结束日期| +----------+ 一组1行(0.00秒) mysql>从ad_campaign限制1中选择CONCAT(UCASE(MID(schedule_type,1,1))、LCASE(MI(scheduletype,2))作为时间表; +----------+ |时间表| +----------+ |结束日期| +----------+ 一组1行(0.00秒)
mysql>select*fromnames; +--------------+ |姓名| +--------------+ |约翰·亚伯拉罕 +--------------+ 一组1行(0.00秒) mysql>SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2))作为名称FROM名称; +--------------+ |姓名| +--------------+ |约翰·亚伯拉罕| +--------------+ 一组1行(0.00秒)
CREATE DEFINER=`root`@`localhost`FUNCTION`UC_FIRST`(`oldWord`VARCHAR(255)) 返回varchar(255)CHARSET utf8 返回连接(UCASE(LEFT(oldWord,1)),LCASE(SUBSTRING(oldWord,2)))
更新tbl_name SET col_name=UC_FIRST(col_name);
如果有人试图将每个单词用空格隔开。。。
CREATE FUNCTION响应(名称VARCHAR(40))RETURNS VARCHAR(200)DETERMINISTIC 开始 设置@m=''; 设置@c=0; 设置@1=1; 而@c<=char_length(name)-char_length(replace(name,'',''))do 设置@c=@c+1; 设置@p=SUBSTRING_INDEX(名称,“”,@c); 设置@k=子字符串(名称,@l,字符长度(@p)-@l+1); 设置@l=字符长度(@k)+2; 集合@m=concat(@m,ucase(left(@k,1)),lcase(substring(@k、2)),“”); 结束while; 回程配平(@m); 结束; 创建过程更新名称() 开始 从名称中选择响应(名称)作为名称; 结束;
结果
+--------------+ |姓名| +--------------+ |阿卜杜勒·卡里姆| +--------------+
更新tb_Company SET CompanyIndustry= CONCAT(上(左(CompanyIndustry,1)),SUBSTRING(Company Industrial,2))
更新用户 SET first_name=CONCAT(UCASE(左(first_name1)), LCASE(SUBSTRING(first_name,2)) ,last_name=CONCAT(UCASE(左(last_name,1)), LCASE(SUBSTRING(last_name,2));
INITCAP(名字||''||lastname)作为全名
-
1 -
@就谷歌引领的这条线索而言,它还很年轻,所以我明确指出了这个答案可以应用的局限性。 但你说得对,标题是关于MySQL的,答案是关于PostreSQL的 – Yury钱包 评论 2022年2月12日11:05
DELIMITER公司$$ 如果存在则删除函数`uc_frist`$$ 创建函数`uc_frist`(str VARCHAR(200))返回VARCHAR(200) 开始 设置str:=lcase(str); set str:=CONCAT(UCASE(LEFT(str,1)),SUBSTRING(str、2)); set str:=REPLACE(str,'a','a'); set str:=REPLACE(str,'b','b'); set str:=REPLACE(str,'c','c'); set str:=REPLACE(str,'d','d'); 设置str:=REPLACE(str,'e','e'); set str:=REPLACE(str,'f','f'); set str:=REPLACE(str,'g','g'); set str:=REPLACE(str,'h','h'); set str:=REPLACE(str,'i','i'); set str:=REPLACE(str,'j','j'); set str:=REPLACE(str,'k','k'); set str:=REPLACE(str,'l','l'); set str:=REPLACE(str,'m','m'); set str:=REPLACE(str,'n','n'); set str:=REPLACE(str,'o','o'); set str:=REPLACE(str,'p','p'); 设置str:=REPLACE(str,'q','q'); set str:=REPLACE(str,'r','r'); set str:=REPLACE(str,'s','s'); set str:=REPLACE(str,'t','t'); set str:=REPLACE(str,'u','u'); set str:=REPLACE(str,'v','v'); set str:=REPLACE(str,'w','w'); set str:=REPLACE(str,'x','x'); set str:=REPLACE(str,'y','y'); set str:=REPLACE(str,'z','z'); 返回str; 结束$$ DELIMITER公司;