微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从包含在 Teradata SQL 中的 1 列中的 name 和 surename 创建 2 个新列?

如何解决如何从包含在 Teradata SQL 中的 1 列中的 name 和 surename 创建 2 个新列?

我在 teradata sql 中有如下表:

姓名
约翰逊西蒙
安妮是什么
皮特豪斯马克
Grahap Michael Josh

此列中的表格:“NAME”包含客户的姓名和姓氏,但请注意,有时客户可能有两个成员的姓氏或有两个名字。

因此我需要:

姓名 姓氏 NAME_2
约翰逊西蒙 约翰逊 西蒙
安妮是什么 什么
皮特豪斯马克 皮特豪斯 标记
Grahap Michael Josh 图表 迈克尔·乔什

我认为,这是可以做到的,我们可以将“NAME”列中的第一个值取到第一个空白处,它将是 SURNAME 列的值,其余值提供给 NAME_2,但我不知道如何用 teradata sql 编写它,或者您有其他想法如何解决这个问题?

解决方法

看起来第一个空格之前的所有内容都是姓氏。其他一切都是name_2。一种方法是regexp_substr()

select regexp_substr(name,'^[^ ]+') as surname,regexp_replace(name,'^[^ ]+ ','') as name_2
,

使用STRTOK

它根据指定的分隔符列表拆分标记并返回第 n 个标记,其中 n 由 tokennum 参数指定。

SELECT NAME,STRTOK(your_table.NAME,' ',1) as SURNAME,2) as NAME_2 FROM your_table;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。