首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regexp_substr拆分名称字符串

问使用regexp_substr拆分名称字符串
EN

Stack Overflow用户
提问于 2018-07-23 09:43:00
回答 1查看 1.3K关注 0票数 1

我找遍了所有地方,但我找不到我想要做的事情的表达式。真的需要一些帮助。

下面是一个示例字符串,我想将其分成三列……姓氏、名字和中间大写字母。我可以毫不费力地取出姓氏,因为它总是第一个逗号之前的字符串。

我需要帮助的地方是名字和中间的首字母。这些数据中有一些空间,这使事情变得复杂。

这是一个示例字符串,我需要帮助拆分它。

NameString =“阿雷奥拉-冈萨雷斯,鲁兹·M”

我可以使用REGEXP_SUBSTR(NameString,'^,+',1,1)拉取姓氏

有没有人能帮我写一下名字和中间首字母的表达?而且,并不总是有中间的首字母...因此,如果中间首字母不存在,则需要返回null。

这是我到目前为止所得到的:

代码语言:javascript
复制
REGEXP_SUBSTR(NameString,'[^,]+',1,1) "LAST_NAME",
TRIM( REGEXP_SUBSTR(NameString,'[^,]+$')   ) "FIRST_NAME",
REGEXP_SUBSTR(   TRIM(REGEXP_SUBSTR(NameString,   '[^, ]+$'  )),   '[^ ]+$') "MIDDLE_NAME",

这会产生:

代码语言:javascript
复制
LAST_NAME           FIRST_NAME     MIDDLE_NAME
----------------------------------------------
ARREOLA-GONZALEZ    LUZ M          M
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 09:46:48

这应该可以做到:

代码语言:javascript
复制
select regexp_substr(name, '[^,]+', 1, 1) as lastname,
       regexp_substr(name, '[^ ]+', 1, 2) as firstname,
       regexp_substr(name, '[^ ]+', 1, 3) as middle   

换句话说,您可以在名字和中间名中使用空格。

如果逗号或空格可以用作分隔符,那么我认为您可以这样做:

代码语言:javascript
复制
select regexp_substr(name, '[^,]+', 1, 1) as lastname,
       regexp_substr(name, '[^ ,]+', 1, 2) as firstname,
       regexp_substr(name, '[^ ,]+', 1, 3) as middle   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51470641

复制
相关文章

相似问题

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