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

请求编写按空格分词的查询语句,实现特定姓名拆分规则

姓名拆分查询语句(按空格分词,单词数≤3时拆分规则)

拆分规则

  • 当姓名按空格分词后的单词数量≤3时,第一个单词作为姓氏(last name),剩余所有单词拼接为名字(first name)

MySQL 实现语句

假设姓名存储在表user_info的full_name字段中:

SELECT
  SUBSTRING_INDEX(full_name, ' ', 1) AS `last name`,
  TRIM(SUBSTRING(full_name, LOCATE(' ', full_name))) AS `first name`
FROM user_info
WHERE LENGTH(full_name) - LENGTH(REPLACE(full_name, ' ', '')) + 1 <= 3;
  • 逻辑说明:
    • SUBSTRING_INDEX(full_name, ' ', 1):截取第一个空格前的内容作为姓氏
    • TRIM(SUBSTRING(full_name, LOCATE(' ', full_name))):从第一个空格后截取内容并去除首尾空格,作为名字
    • WHERE条件:通过计算空格数量+1得到单词数,筛选出单词数≤3的记录

PostgreSQL 实现语句

同样基于表user_info的full_name字段:

SELECT
  SPLIT_PART(full_name, ' ', 1) AS "last name",
  TRIM(BOTH ' ' FROM REGEXP_REPLACE(full_name, '^[^ ]+ ', '')) AS "first name"
FROM user_info
WHERE array_length(string_to_array(full_name, ' '), 1) <= 3;
  • 逻辑说明:
    • SPLIT_PART(full_name, ' ', 1):按空格拆分后取第一个部分作为姓氏
    • REGEXP_REPLACE(full_name, '^[^ ]+ ', ''):替换掉开头的第一个单词及后续空格,再用TRIM清理多余空格得到名字
    • WHERE条件:将姓名转为数组后获取长度,筛选单词数≤3的记录

示例验证

输入姓名:Daniel Thomas Kon
查询结果如下:

last namefirst name
DanielThomas Kon

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:25:19