如何解决如何从包含在 Teradata SQL 中的 1 列中的 name 和 surename 创建 2 个新列?
姓名 |
---|
约翰逊西蒙 |
安妮是什么 |
皮特豪斯马克 |
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 举报,一经查实,本站将立刻删除。