0

我需要从姓氏中获取后缀。例如,我可能会得到带有如下后缀的姓氏:Smith JrSmith Jr。或Smith LCSWSmith JACG,甚至是这样的: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 个单词组成的姓氏,例如Abardo Torres Jr

4

1 回答 1

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)

小提琴

于 2013-04-05T16:29:57.940 回答