在计算视图中使用LIKE_REGEXPR时出现的问题

2020-08-15 12:06发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在HANA中处理...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在HANA中处理图形计算视图。 我们需要检查输入的内容是数字还是字符。如果输入的是数字,则前导零应被修剪。

由于自定义函数无法在计算视图中使用,因此我尝试创建一个计算列并将以下逻辑放在表达式中:



在验证期间,它没有显示任何错误。 但是,当我尝试执行此视图并查看原始数据时,出现以下错误。

但是,当我执行LIKE_REGEXPR作为查询时,它没有给出错误。

仅在尝试在"计算视图"中使用时给出此错误。 请帮助我。

(54.1 kB)
3条回答
黑丝骑士
2020-08-15 12:26 .采纳回答

看您的图片,问题似乎在于您尝试使用LIKE_REGEXPR 谓词,其中case表达式期望另一个表达式。

此谓词的结果为< em> boolean ,这就是您在错误消息中找到的内容。

现在,从模型的语法检查中未涵盖这一点是否有意义? 一点也不。

可以使用LOCATE_REGEXPR 函数来实现等效逻辑,如下所示:

 MAP(  locate_regexpr(START'[^ 0-9 \-\。\,\ + e]'
                      标志'i'
                      在"材料"中)
      ,0,ltrim("材料"," 0")
      ,"材料")
 

这将检查所有非数字字符,如果结果为0(=找不到这些字符),则将评估LTRIM()函数。 否则,将使用MAPping的默认选项,并且MATERIAL的值将不变地传递。

要对此进行更广泛的讨论,可以查看我的博客文章

您的电话号码是什么?

显然,这是很多逐值处理的过程,并不能完全帮助您提高查询性能。 因此,我建议仅在将数据返回给客户端之前将其用作最后一个处理步骤,并且我绝对不建议在此计算列上执行连接。

一周热门 更多>