我正在尝试使用Python UDFs在MonetDB中实现一些字符串函数。我使用的一个简单函数是提取字符串的最后一个单词。问题是:当字符串是NULL
时,我要做什么才能让函数也返回NULL
?
到目前为止,我所做的是:
create function parea.lastname(s string)
returns varchar(255)
language python {
"""
Some description
"""
import numpy as np
import pandas as pd
# Convert strings scalars to an array type
if not isinstance(s, np.ndarray):
s = np.array([s], dtype=np.ndarray)
s = pd.Series(s)
res = s.str.split(' ').str.get(-1).values
return res
};
在带有NULL
值的表中测试此函数时,得到以下结果:
-- Create table
create table foo (names string);
insert into foo values ('NONONO DOS SANTOS'), ('HOYOHOYO'), (NULL);
-- Run the function
select names, parea.lastname(names) from foo;
结果:
+-------------------+----------------------+
| names | L3 |
+===================+======================+
| NONONO DOS SANTOS | SANTOS |
| HOYOHOYO | HOYOHOYO |
| null | -9223372036854775808 |
+-------------------+----------------------+
因此,函数返回一些伪值,它用来指示转换为字符串的NULL
,而不是NULL
值本身。寻找MonetDBdocumentation,它表示“如果输入包含空值,“i”将是一个MaskedArray,否则“i”将是一个常规的一维Numpy数组。这是我找到的唯一的参考资料,但我不知道如何利用它对我有利。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐