首页 > 数据库 > mysql教程 > 如何在 SQL 中将单列姓名拆分为名字列和姓氏列?

如何在 SQL 中将单列姓名拆分为名字列和姓氏列?

DDD
发布: 2025-01-13 10:23:42
原创
997 人浏览过

How to Split a Single Column of Names into First and Last Name Columns in SQL?

将单列值拆分为多列值

问题:

您想将包含姓名列表的单列转换为名和姓的多列。

示例:

<code class="language-sql">姓名
------------
abcd efgh
ijk lmn opq
asd j. asdjja
asb (asdfas) asd
asd</code>
登录后复制

预期输出:

<code class="language-sql">名             姓
----------------------------------
abcd                     efgh
ijk                      lm opq
asd                      asdjja
asb                      asd
asd                      NULL</code>
登录后复制

解决方案:

之前的方法可能无法正确处理所有姓名格式。以下是用 T-SQL 改进的解决方案:

<code class="language-sql">SELECT 
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, 1, CHARINDEX(' ', name) - 1)
    ELSE name
  END AS first_name,
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name))
    ELSE NULL
  END AS last_name
FROM 
  YourTable;</code>
登录后复制

此 SQL 代码首先检查姓名中是否存在空格。如果存在,它使用 SUBSTRING 函数提取空格之前的部分作为名,空格之后的部分作为姓。如果姓名中没有空格,则将整个姓名作为名,姓则为 NULL。 这比之前的解决方案更稳健,能更好地处理各种姓名格式。

以上是如何在 SQL 中将单列姓名拆分为名字列和姓氏列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板