[英]Split Name into Last name, First Name, Middle Name in SQL
I have a record below. 我在下面有记录。 I want to split the name into Lname, Fname, Mname 我想将名称分为Lname,Fname,Mname
Name
John, David Handsome
Here is my query. 这是我的查询。 I was able to get Lname but not Fname and Mname yet. 我能够获得Lname,但不能获得Fname和Mname。
SELECT
NAME,
LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME
FROM TABLE
My desired output would be: 我想要的输出将是:
Name Lname Fname Mname
John, David Handsome John Daivd Handsome
如果名称格式将保持不变,则使用以下格式:
select name,LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME, regexp_substr(name,'[^ ]+',1,2) as fname,regexp_substr(name,'[^ ]+',1,3) mname from table;
You can do it like this; 你可以这样做;
SELECT
LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME,
LEFT(REPLACE(NAME,LEFT(NAME,CHARINDEX(',',NAME)+1),''),CHARINDEX(' ',REPLACE(NAME,LEFT(NAME,CHARINDEX(',',NAME)+1),''))-1) AS FNAME,
REPLACE(REPLACE(NAME,LEFT(NAME,CHARINDEX(',',NAME)+1),''),LEFT(REPLACE(NAME,LEFT(NAME,CHARINDEX(',',NAME)+1),''),CHARINDEX(' ',REPLACE(NAME,LEFT(NAME,CHARINDEX(',',NAME)+1),''))-1),'') AS MNAME
It comes little confusing because of nested replace and charindex functions. 由于嵌套的replace和charindex函数,因此几乎不会造成混淆。 But if you focus on them closely, logic is quite simple. 但是,如果您密切关注它们,逻辑将非常简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.