首頁 >資料庫 >mysql教程 >如何在 SQL 中將單列姓名拆分為名字列和姓氏列?

如何在 SQL 中將單列姓名拆分為名字列和姓氏列?

DDD
DDD原創
2025-01-13 10:23:421041瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn