You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL格式化name列:统一姓名大小写与分隔格式问题求助

SQL姓名格式化问题解决方法

针对name_matrix表中name列格式混乱(逗号后带/不带空格、大小写不统一)的问题,核心解决思路是先清理拆分后的空白字符,再进行大小写格式化,以下是几种可行方案:

方案1:拆分后直接清理空格+手动格式化大小写

适用于不支持INITCAP函数的数据库:

SELECT 
  UPPER(LEFT(TRIM(split_part(name, ',', 2)), 1)) || LOWER(SUBSTRING(TRIM(split_part(name, ',', 2)), 2)) AS firstname,
  UPPER(LEFT(TRIM(split_part(name, ',', 1)), 1)) || LOWER(SUBSTRING(TRIM(split_part(name, ',', 1)), 2)) AS lastname
FROM name_matrix;
  • TRIM(split_part(...)):去除拆分结果前后的所有空白字符(包括逗号后的空格),确保后续处理的是纯姓名内容
  • UPPER(LEFT(...)) || LOWER(SUBSTRING(...)):手动实现首字母大写、其余字母小写的格式

方案2:先统一姓名格式再拆分

先预处理name列,把所有, (逗号+空格)替换为, ,消除格式差异后再拆分:

WITH cleaned_names AS (
  SELECT REPLACE(name, ', ', ',') AS cleaned_name
  FROM name_matrix
)
SELECT 
  UPPER(LEFT(split_part(cleaned_name, ',', 2), 1)) || LOWER(SUBSTRING(split_part(cleaned_name, ',', 2), 2)) AS firstname,
  UPPER(LEFT(split_part(cleaned_name, ',', 1), 1)) || LOWER(SUBSTRING(split_part(cleaned_name, ',', 1), 2)) AS lastname
FROM cleaned_names;

方案3:用INITCAP简化格式化(PostgreSQL等支持该函数的数据库)

INITCAP函数可自动将字符串每个单词的首字母大写、其余小写,配合TRIM一步完成:

SELECT 
  INITCAP(TRIM(split_part(name, ',', 2))) AS firstname,
  INITCAP(TRIM(split_part(name, ',', 1))) AS lastname
FROM name_matrix;

内容的提问来源于stack exchange,提问作者mack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:22:31