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

如何用SQL将WordPress的display_name拆分写入user_meta的first_name和last_name

前置注意事项
  • 操作前必须先备份wp_users和wp_usermeta表,避免数据异常无法恢复
  • 以下SQL默认使用WordPress默认表前缀wp_,如果你的站点自定义了表前缀,请将SQL中的wp_替换为实际前缀
  • 拆分规则说明:
    • 中文姓名默认按「首字为姓,剩余为名字」拆分,复姓场景可自行调整字符截取长度
    • 英文姓名默认按「第一个空格前为名,空格后为姓」拆分,无空格的英文姓名不会写入姓氏数据

场景1:中文姓名拆分写入

-- 写入姓氏(last_name)
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT 
  ID AS user_id,
  'last_name' AS meta_key,
  LEFT(display_name, 1) AS meta_value
FROM wp_users
ON DUPLICATE KEY UPDATE meta_value = VALUES(meta_value);

-- 写入名字(first_name)
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT 
  ID AS user_id,
  'first_name' AS meta_key,
  SUBSTRING(display_name, 2) AS meta_value
FROM wp_users
ON DUPLICATE KEY UPDATE meta_value = VALUES(meta_value);

如果是复姓,将上述SQL中LEFT(display_name, 1)的1改为2,SUBSTRING(display_name, 2)的2改为3即可。


场景2:英文姓名(空格分隔)拆分写入

-- 写入名字(first_name)
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT 
  ID AS user_id,
  'first_name' AS meta_key,
  SUBSTRING_INDEX(display_name, ' ', 1) AS meta_value
FROM wp_users
ON DUPLICATE KEY UPDATE meta_value = VALUES(meta_value);

-- 写入姓氏(last_name)
INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT 
  ID AS user_id,
  'last_name' AS meta_key,
  SUBSTRING(display_name, LOCATE(' ', display_name) + 1) AS meta_value
FROM wp_users
WHERE LOCATE(' ', display_name) > 0
ON DUPLICATE KEY UPDATE meta_value = VALUES(meta_value);

结果验证

执行完成后可运行以下SQL抽查拆分结果是否符合预期:

SELECT 
  u.ID,
  u.display_name,
  um1.meta_value AS first_name,
  um2.meta_value AS last_name
FROM wp_users u
LEFT JOIN wp_usermeta um1 ON u.ID = um1.user_id AND um1.meta_key = 'first_name'
LEFT JOIN wp_usermeta um2 ON u.ID = um2.user_id AND um2.meta_key = 'last_name'
LIMIT 20;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:04