我读到在大多数情况下不需要为udf指定返回类型,但如果您添加返回
语句,那么它是必要的。
我有以下udf,它在内部迭代一个列表,我希望在匹配的情况下udf立即返回。基于我在这里找到的其他答案,我尝试了以下两种方法来定义返回类型:
def removeSalutation = udf((name: String) => String {
val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
for(salutation <- salutationList){
if(name.endsWith(salutation)){
return name.dropRight(salutation.length())
}
}
return name
})
上面的脚本只是返回一个错误
def removeSalutation = udf[String, String]((name: String) => {
val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
for(salutation <- salutationList){
if(name.endsWith(salutation)){
return name.dropRight(salutation.length())
}
}
return name
})
上面的剧本一直在说:
错误:方法删除别名有返回语句;需要结果类型
指定返回类型的正确方法是什么?
如下分别定义函数:
def _removeSalutation(name: String) : String = {
val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
for(salutation <- salutationList){
if(name.endsWith(salutation)){
return name.dropRight(salutation.length())
}
}
return name
}
val removeSalutation = udf(_removeSalutation _)
问题内容: 这仅返回结果,我需要返回全部89%。有任何想法如何做吗? 问题答案: 简单的解决方案: 更漂亮的解决方案: 最漂亮的解决方案:
问题内容: 已经晚了,所以这一定是愚蠢的。我已将LinqPad连接到我的数据库,但似乎无法获得最简单查询的结果。 当我运行它时,LinqPad说它成功执行了(C#语句模式)。什么都不会被搁置。 我可以编写以下非常简单的Lambda(C#表达式模式): 那行得通。为什么?我更喜欢使用非lambda查询构建功能。我敢肯定,这一切都是愚蠢的。 问题答案: 我希望在声明模式下,您必须执行类似call的操作
问题内容: 我有一张桌子,里面有人和他们拥有的汽车 该查询为我提供了和拥有完全相同的汽车以及Lisa本人的人,这很好。 结果: 如果我想查找所有拥有相同汽车的人,请重新运行查询,结果应为我。 现在,我有一个Java名称列表,对于每个名称,我都运行此查询。真的很慢。无论如何,是否可以找到所有拥有相同汽车的人,并在单个数据库调用中将结果划分为组? 例如,使用第一个表。我可以运行将名称分组的查询。请注意
我在Java中所知的程度可以通过两种方式报告错误:返回值和异常。例如,下面的代码: 另一个观察结果是:如果取消对最后一条“return result”语句的注释,则会得到一条错误消息: 变量结果可能未初始化 ;如果对最后一条“return result”进行注释,则会得到一条错误消息: 缺少return语句 但是我已经在try子句中包含了return语句。
问题内容: 我有这种简单的查询,它返回给定id的非空整数字段: 问题是,如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果也是如此。 我有这个东西工作,但我不喜欢它,因为它运行相同子查询的2倍: 如果该行存在,则返回field1,否则返回0。有什么改进的方法吗? 谢谢! 编辑以下一些评论和答案 :是的,它必须在 单个查询语句中, 并且我不能使用count技巧,因为 我只需要返回1