在HANA中将减号从右向左移动

2020-08-16 09:55发布

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

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

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


嗨,

我正在使用HANA中的自定义函数,该函数将检查输入是否有前导或尾随空格,以及在输入的右侧是否存在减号(-),因此应将其向左移动 示例:如果输入为'12345-',则输出应为-12345。

以下是代码:

创建或替换功能FN_CONVERTNBR(SAPNBR_P VARCHAR(100))返回v_out数字语言SQLSCRIPT作为SQLEXCEPTION BEGIN的开始声明退出处理程序v_out:= NULL; 结束; IF substring(TRIM(SAPNBR_P),-1,1)='-'THEN v_out:= TO_NUMBER('-'|| substring(trim(SAPNBR_P),1,length(trim(SAPNBR_P))-1))); ELSE v_out:= TO_NUMBER(trim(SAPNBR_P)); 万一; 结束;

当我尝试执行此功能时,它没有返回预期的输出。

请帮助我

(22.4 kB)
2条回答
bbpeas
2020-08-16 10:27 .采纳回答

您对带有子字符串的减号的检查不起作用,因此您将得到一个无效的数字错误,该错误将由退出处理程序捕获(并因此返回空值)。

另一种选择:

创建函数FN_CONVERTNBR(SAPNBR_P VARCHAR(100))
 返回v_out NUMBER
 语言SQLSCRIPT AS
 开始
   声明tmp varchar(100):= trim(:sapnbr_p);
  
   SQLEXCEPTION的DECLARE退出处理程序
     开始
       v_out:= NULL;
     结束;
    
   如果right(:tmp,1)='-'
     v_out = to_number(replace(:tmp,'-',``)));
     v_out =:v_out * -1;
   其他
     v_out = to_number(:tmp);
   万一;
 结束;
 

一周热门 更多>