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

MySQL拆分含中文字符的列:中文姓名拆分问题求助

解决MySQL中文姓名拆分问题

问题根源

你用SUBSTRING(full_name, 0, 1)返回空列,核心原因是MySQL的SUBSTRING起始索引从1开始,传入0作为起始位置时会导致截取失效;另外如果列的字符集未正确设置为支持中文的类型(如utf8mb4、gbk),也会引发多字节字符截取错误。

可行解决方案

1. 用LEFT函数截取姓氏(推荐)

LEFT函数直接按字符数截取前N个字符,无需考虑字节长度,适配中文场景:

SELECT 
  LEFT(full_name, 1) AS surname,
  SUBSTRING(full_name, 2) AS given_name
FROM citizens_CH;
  • LEFT(full_name,1):取姓名的第一个字符(姓氏)
  • SUBSTRING(full_name,2):从第2个字符开始截取到末尾(名字部分,不管是1还是2个字符都适用)

2. 修正SUBSTRING参数

如果坚持用SUBSTRING,把起始位置改为1即可:

SELECT 
  SUBSTRING(full_name, 1, 1) AS surname,
  SUBSTRING(full_name, 2) AS given_name
FROM citizens_CH;

3. 验证列字符集

如果上述方法仍无效,检查full_name列的字符集是否支持中文:

SHOW CREATE TABLE citizens_CH;

查看输出中full_name列的CHARSET属性,确保是utf8mb4或gbk(避免使用latin1这类不支持中文的字符集)。若字符集错误,可修改列字符集:

ALTER TABLE citizens_CH MODIFY COLUMN full_name VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:54:21