新建了Java自定义函数,功能是输入三个字符串a,b,c,如果a=1,判断bc内容是否一致,如果a=2,判断c的内容是否包含在b中,如b=“今天是星期二太阳很好”,c="是太阳好"返回true,c="好太阳"返回false,因为顺序不一致。具体方法如下
public class IsRealStr {
public boolean evaluate(String a,String b, String c) {
if (b == null || c == null) {
return false;
}
if(Objects.equals(a, "1")){
return b.equals(c);
}else if(Objects.equals(a, "2")){
int i = 0;
int j = 0;
while (i < b.length() && j < c.length()) {
if (b.charAt(i) == c.charAt(j)) {
j++;
}
i++;
}
return j == c.length();
}
return true;
}
}
创建UDF函数
CREATE global FUNCTION is_abbreviation(String,String,String) RETURNS boolean PROPERTIES (
"file"="file:///data/doris/udf/dorisUdf-1.0.jar",
"symbol"="com.zqjhzx.udf.portfunction.IsRealStr",
"always_nullable"="true",
"type"="JAVA_UDF"
);
执行SQL
select is_abbreviation("2", "今天是星期二太阳很好", "是太阳好")
执行成功但无结果返回,上述所有创建过程均无报错,fe业务报错。但将add_one的UDF新建后功能正常,上诉问题暂无法排查,请求大佬协助,感谢。
doris版本2.1.7