首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中将姓名拆分为姓氏、名字、中间名

在SQL中将姓名拆分为姓氏、名字、中间名
EN

Stack Overflow用户
提问于 2017-11-22 02:48:21
回答 2查看 149关注 0票数 1

下面是我的记录。我想将名称拆分为Lname、Fname、Mname

代码语言:javascript
复制
Name
John, David Handsome

这是我的问题。我能得到Lname,但还不能得到Fname和Mname。

代码语言:javascript
复制
SELECT 
NAME, 
LEFT(NAME,CHARINDEX(',',NAME)-1)    AS LNAME
FROM TABLE

我想要的输出是:

代码语言:javascript
复制
Name                    Lname   Fname   Mname
John, David Handsome    John    Daivd   Handsome
EN

回答 2

Stack Overflow用户

发布于 2017-11-22 03:15:54

如果名称的格式保持不变,则使用下面的名称:

代码语言:javascript
复制
select name,LEFT(NAME,CHARINDEX(',',NAME)-1)    AS LNAME, regexp_substr(name,'[^ ]+',1,2)  as fname,regexp_substr(name,'[^ ]+',1,3) mname from table;
票数 0
EN

Stack Overflow用户

发布于 2017-11-22 04:10:10

你可以这样做;

代码语言:javascript
复制
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函数,它不会让人感到困惑。但是,如果你密切关注它们,逻辑就会非常简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47420513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档