gpt4 book ai didi

sql - 解析字符串数据以仅选择全名中的中间名

转载 作者:行者123 更新时间:2023-12-04 19:58:57 27 4
gpt4 key购买 nike

我有一个存储全名的列。我需要在名字、姓氏、中间名、前缀等中解析它。

中间名的要求是选择空格之间的名称,然后用 A-z 字符命名,然后是空格。敌人:

Name- My name is 
Middle name-> name

Full name-> My n3ame is this
Middle Name-> is

Full name-> My name
Middle name-> NULL

我现在不考虑这种双重空间出现两次的情况。在这种情况下,我现在只选择第一次出现:

前任:
Full Name-> My name is this
Middle name-> name

我在想下面(但这并没有处理只有 A-Z 数据的中间名,在这种情况下,上面的场景 2 将给出“n3me”而不是“is”):
SUBSTR(FULL_name,Instr(Full_name,' '),Instr(Full_name,' ',2))

最佳答案

由于您必须排除不是 100% 字母的“单词”(如 n3ame ),因此使用正则表达式更容易做到这一点。这是一种方法:

with t(full_name) as (
select 'My name is' from dual union all
select 'My n3ame is this' from dual union all
select 'My name' from dual
)
select full_name,
regexp_substr(full_name, '^.*? ([[:alpha:]]+) ', 1, 1, null, 1) middle_name
from t
;

FULL_NAME MIDDLE_NAME
---------------- ----------------
My name is name
My n3ame is this is
My name

这将返回在空格之间找到的 1 个或多个连续字母的字符串的第一次出现。

关于sql - 解析字符串数据以仅选择全名中的中间名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55871362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com