下面是我的记录。我想将名称拆分为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发布于 2017-11-22 03:15:54
如果名称的格式保持不变,则使用下面的名称:
select name,LEFT(NAME,CHARINDEX(',',NAME)-1) AS LNAME, regexp_substr(name,'[^ ]+',1,2) as fname,regexp_substr(name,'[^ ]+',1,3) mname from table;发布于 2017-11-22 04:10:10
你可以这样做;
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由于嵌套的replace和charindex函数,它不会让人感到困惑。但是,如果你密切关注它们,逻辑就会非常简单。
https://stackoverflow.com/questions/47420513
复制相似问题