如何创建一个接受一个字符串并返回多个字符串的自定义项?到目前为止,我看到的udf只能给出一个输出。如何将多个feild作为udf的输出?
最简单的是name->firstname,lastname的实现。不是寻找分割名称的替代解决方案,而是寻找有助于实现此类需求的api/udf。
假设namesplitter是我的自定义项
从mytable中选择age,namesplitter(name)作为firstname,lastname;
输入
****Input****
------------------------
Age | Name
------------------------
24 | John Smit
13 | Sheldon Cooper
-------------------------
输出
****Out put****
-----------------------------------
Age | First Name | Last Name
-----------------------------------
24 | John | Smit
13 | Sheldon | Cooper
-----------------------------------
1条答案
按热度按时间rjzwgtxy1#
使用split()函数,它将围绕regexp模式拆分字符串并返回一个数组:
或者只是
select age, split(Name,' +')[0] FirstName, split(Name,' +')[0] LastName from myTable;
图案' +'
表示一个或多个空格。另外,如果您有三个单词或更长的名称,并且只想将第一个单词作为名称拆分,而将其他所有单词作为姓氏拆分,或者使用更复杂的规则,则可以使用regexp\u extract函数,如本例所示:
这里的模式是指:字符串“^”的开头,第一个捕获组由任意数量的字符组成
(.*?)
,由任意数量的空间组成的非捕获组(?: +)
,最后一个捕获组,由任意数量的字符组成(.*)
,和$
表示字符串的结尾