【问题标题】:Teradata Parsing Full Name field sqlTeradata解析全名字段sql
【发布时间】:2020-04-01 09:44:21
【问题描述】:

我在 Teradata 表中有一个名称值为 char(64) LATIN 的数据类型的列。这些值看起来像“SMITH JOHN J”、“Doe Jane Anne”等。元素之间的空间因值而异。我可以用左键解析出姓氏,但在解析名字和中间名首字母/名称时遇到问题。我尝试过使用索引和位置函数,但没有得到想要的结果。有没有人遇到过类似的情况?

【问题讨论】:

  • 看看strtok函数

标签: sql teradata


【解决方案1】:

您可以使用regexp_substr() 并调整occurence 参数,该参数指定要返回的出现次数:

select 
    regexp_substr(name, '\w+', 1, 1) last_name,
    regexp_substr(name, '\w+', 1, 2) middle_name,
    regexp_substr(name, '\w+', 1, 3) first_name
from mytable

在 Teradata 使用的 PCRE 表示法中,\w 匹配单词字符(字母数字和下划线)。您可能希望使用\S(任何空格)使正则表达式更广泛。

【讨论】:

  • 谢谢。这个功能轻松解决了我的问题。
  • 希望没有连字符的名称或O'Hara 或逗号而不是空格。 StrTok(name, ' ,', 1) 在这种情况下要简单得多
猜你喜欢
  • 1970-01-01
  • 2022-12-09
  • 2010-09-14
  • 2010-10-19
  • 2019-05-07
  • 2020-08-26
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
相关资源
最近更新 更多