我需要从姓氏中获取后缀。例如,我可能会得到带有后缀的姓氏: Smith Jr 或 Smith Jr 。或 Smith LCSW ,或 Smith J.A.C.G。,甚至是这样的:Abardo Torres Jr或Abbas Feinberg LCSW等。
我知道我必须使用SUBSTR和INSTR,但我被卡住了。我只能做以下事情而无法使其发挥作用。任何人都可以帮助我吗?
subtr(last_name,instr(last_name,' ',1) + 1
,(instr(last_name,' ', instr(last_name,' ',1)+1 - (instr(last_name,' ',1)+1)
即使我可以使其有效,它也可能仅适用于由1个单词+后缀组成的姓氏,例如 Smith Jr 但不适用于包含2个单词的姓氏,例如< em> Abardo Torres Jr
答案 0 :(得分:0)
select
last_name,
regexp_replace(last_name, '\s*((Esq|KBE|MSc|BSc|Jr|LCSW|PhD|J\.A\.C\.G)\.?\s*)*$')
as name_without_suffix,
regexp_substr(last_name, '((Esq|KBE|MSc|BSc|Jr|LCSW|PhD|J\.A\.C\.G)\.?\s*)*$')
as suffix
from your_table
简单地获取字符串中的最后一个单词:
regexp_substr(string, '(\S+)\s*$', 1, 1, 'i', 1)