我有以下记录。我想将名称拆分为Lname,Fname,Mname
Name
John, David Handsome
这是我的查询。我能够得到Lname但不是Fname和Mname。
SELECT
NAME,
LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME
FROM TABLE
我想要的输出是:
Name Lname Fname Mname
John, David Handsome John Daivd Handsome
答案 0 :(得分:0)
如果名称的格式保持不变,请使用以下内容:
select name,LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME, regexp_substr(name,'[^ ]+',1,2) as fname,regexp_substr(name,'[^ ]+',1,3) mname from table;
答案 1 :(得分:0)
你可以这样做;
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
由于嵌套替换和charindex函数,它几乎没有混淆。但如果你密切关注它们,逻辑很简单。