Oracle SQL格式化姓名为姓氏空格首字母加句点的实现方法
Oracle SQL 姓名格式修正方法
你的查询结果数据正确,仅姓名拼接段缺少两个必填格式字符:姓氏与名首字母间的半角空格、名首字母后的半角句点,调整字符串拼接逻辑即可满足要求。
Oracle SQL中做字符串拼接时,用||运算符比嵌套CONCAT函数更直观,非常适合新手使用,修改后可直接运行的完整SQL如下:
SELECT UPPER(LAST_NAME) || ' ' || UPPER(SUBSTR(FIRST_NAME, 1, 1)) || '.' AS "Student Name", PHONE FROM STUDENT s WHERE PHONE LIKE '203%' ORDER BY LAST_NAME
拼接逻辑说明
姓名段的拼接完全匹配「大写姓氏 名首字母.」的格式要求,逐段对应:
UPPER(LAST_NAME):将姓氏字段转为全大写|| ' ':拼接姓氏与首字母之间要求的空格UPPER(SUBSTR(FIRST_NAME, 1, 1)):提取名字字段的第一个字符,转为大写|| '.':拼接首字母末尾要求的句点
如果你一定要用CONCAT函数实现,注意Oracle原生CONCAT一次仅支持传入2个参数,必须多层嵌套才能完成多段拼接,写法更繁琐(不推荐新手使用):
SELECT CONCAT( CONCAT( CONCAT(UPPER(LAST_NAME), ' '), UPPER(SUBSTR(FIRST_NAME, 1, 1)) ), '.' ) AS "Student Name", PHONE FROM STUDENT s WHERE PHONE LIKE '203%' ORDER BY LAST_NAME
补充:如果表中存在同姓学生,可以在ORDER BY子句后追加, FIRST_NAME,让字母排序的结果更严谨。
内容的提问来源于stack exchange,提问作者jamiegale21
相关产品推荐
相关产品推荐

