将Oracle输出解析为特定格式

时间:2012-07-12 21:22:04

标签: oracle parsing

我在数据库中有cust_nm列。 cust_nm列使用姓氏格式化,然后第一个名称用逗号分隔,后跟空格而不是中间的首字母。

TUNGESVIK,MARK M

我想运行Oracle查询来输出这种格式。

1 个答案:

答案 0 :(得分:1)

如果你的所有名字都是那种确切的格式,你可以做这样的事情

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 'TUNGESVIK, MARK M' cust_nm from dual
  3  )
  4  select substr( cust_nm, 1, instr(cust_nm, ', ')-1 ) last_name,
  5         substr( cust_nm, instr(cust_nm, ', ')+2, instr(cust_nm, ' ', -1) - instr(cust_nm, ', ')-2) first_name,
  6         substr( cust_nm, instr(cust_nm, ' ', -1)+1, length(cust_nm) ) middle_initial
  7*   from x
SQL> /

LAST_NAME FIRS M
--------- ---- -
TUNGESVIK MARK M

当你开始包括那些没有中间名首字母(或者有多个中间名字首字母)的人时,他们的姓氏或名字中有多个空格的人,至少有些名字不是这种格式但是其他一些格式,事情变得更具挑战性。有些软件产品的唯一目的是获取传入的名称数据,解析它,擦除它并使其标准化。编写自己的代码以尝试处理每个角落的情况可能会花费比预期更多的时间。