我找遍了所有地方,但我找不到我想要做的事情的表达式。真的需要一些帮助。
下面是一个示例字符串,我想将其分成三列……姓氏、名字和中间大写字母。我可以毫不费力地取出姓氏,因为它总是第一个逗号之前的字符串。
我需要帮助的地方是名字和中间的首字母。这些数据中有一些空间,这使事情变得复杂。
这是一个示例字符串,我需要帮助拆分它。
NameString =“阿雷奥拉-冈萨雷斯,鲁兹·M”
我可以使用REGEXP_SUBSTR(NameString,'^,+',1,1)拉取姓氏
有没有人能帮我写一下名字和中间首字母的表达?而且,并不总是有中间的首字母...因此,如果中间首字母不存在,则需要返回null。
这是我到目前为止所得到的:
REGEXP_SUBSTR(NameString,'[^,]+',1,1) "LAST_NAME",
TRIM( REGEXP_SUBSTR(NameString,'[^,]+$') ) "FIRST_NAME",
REGEXP_SUBSTR( TRIM(REGEXP_SUBSTR(NameString, '[^, ]+$' )), '[^ ]+$') "MIDDLE_NAME",这会产生:
LAST_NAME FIRST_NAME MIDDLE_NAME
----------------------------------------------
ARREOLA-GONZALEZ LUZ M M发布于 2018-07-23 09:46:48
这应该可以做到:
select regexp_substr(name, '[^,]+', 1, 1) as lastname,
regexp_substr(name, '[^ ]+', 1, 2) as firstname,
regexp_substr(name, '[^ ]+', 1, 3) as middle 换句话说,您可以在名字和中间名中使用空格。
如果逗号或空格可以用作分隔符,那么我认为您可以这样做:
select regexp_substr(name, '[^,]+', 1, 1) as lastname,
regexp_substr(name, '[^ ,]+', 1, 2) as firstname,
regexp_substr(name, '[^ ,]+', 1, 3) as middle https://stackoverflow.com/questions/51470641
复制相似问题