如何编写SQL查询实现姓名首3字母大写其余小写的格式转换?
SQL实现姓名前3位大写、剩余字母小写的格式转换
针对将姓名转换为前3个字母大写、剩余字母小写的需求(例如输入Richard输出RIChard),以下是不同主流数据库的实现语句:
MySQL/MariaDB
使用UPPER()、LEFT()、LOWER()和SUBSTRING()函数组合:
SELECT CONCAT( UPPER(LEFT(name, 3)), LOWER(SUBSTRING(name, 4)) ) AS formatted_name FROM your_table;
LEFT(name, 3):提取姓名前3个字符UPPER():将前3个字符转为大写SUBSTRING(name, 4):提取从第4位开始的剩余字符LOWER():将剩余字符转为小写CONCAT():拼接两部分得到最终格式
PostgreSQL
PostgreSQL字符串索引从1开始,语法与MySQL类似:
SELECT CONCAT( UPPER(LEFT(name, 3)), LOWER(SUBSTRING(name FROM 4)) ) AS formatted_name FROM your_table;
也可以用RIGHT()函数替代SUBSTRING(需计算剩余字符长度):
SELECT CONCAT( UPPER(LEFT(name, 3)), LOWER(RIGHT(name, LENGTH(name) - 3)) ) AS formatted_name FROM your_table;
SQL Server
使用UPPER()、LEFT()、LOWER()和SUBSTRING():
SELECT CONCAT( UPPER(LEFT(name, 3)), LOWER(SUBSTRING(name, 4, LEN(name))) ) AS formatted_name FROM your_table;
示例验证
若表中存在记录name = 'Richard',执行上述语句后,formatted_name的结果为RIChard,完全符合需求。
内容的提问来源于stack exchange,提问作者Sanal Kumar Krishna
相关产品推荐
相关产品推荐

