在MySQL中從名字字串中提取名字、中間名和姓氏
將姓名字串拆分為其組成部分(名字、中間名、姓氏)在資料處理中可能是一項有用的任務。在MySQL中,您可以使用幾種方法來實現此目的:
方法一(名字、中間名、姓氏)
此方法涉及使用SUBSTRING_INDEX()和IF()函數的組合來提取各個名稱:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name, IF(LENGTH(fullname) - LENGTH(REPLACE(fullname, ' ', '')) > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1), NULL) AS middle_name, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1) AS last_name FROM registeredusers;</code>
在此查詢中:
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1)
取名字。 IF(LENGTH(fullname) - LENGTH(REPLACE(fullname, ' ', '')) > 1, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1), NULL)
檢查是否有中間名,如果存在則提取它。如果不存在,則將中間名設為NULL。 SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1)
提取姓氏。 方法二(名字、姓氏)
如果您只對名字和姓氏感興趣,您可以使用一個更簡單的查詢,該查詢使用LOCATE()和TRIM()函數:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name, TRIM(SUBSTR(fullname, LOCATE(' ', fullname))) AS last_name FROM registeredusers;</code>
在此查詢中:
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1)
取名字。 TRIM(SUBSTR(fullname, LOCATE(' ', fullname)))
提取第一個空格之後的部分名稱,有效地為您提供姓氏。 以上是如何從 MySQL 中的名稱字串中提取名字、中間名和姓氏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!