SAP HANA与Try_Cast等效的逻辑

时间:2019-04-12 14:19:21

标签: hana hana-sql-script

在SQL Server中,您有一个称为Try_Cast的函数。 https://docs.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-2017

我喜欢您可以将其放入Case语句中

SELECT   
CASE WHEN TRY_CAST('test' AS float) IS NULL   
THEN 'Cast failed'  
ELSE 'Cast succeeded'  
END AS Result;  

我需要在SAP HANA中具有完全相同的逻辑。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

据我所知,HANA尚无类似产品。如果您有特定的类型转换(例如,从nvarchar到float),则可以使用退出处理程序创建自己的标量函数来处理“尝试类型转换”,该处理程序会检查相关的数据类型转换sql错误代码。

要使nvarchar浮动,此函数如下所示:

FUNCTION "try_cast_nvarchar_2_float" ( i_value nvarchar(5000) ) 
RETURNS e_result float
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER AS 
BEGIN
  DECLARE EXIT HANDLER FOR SQL_ERROR_CODE 339
    e_result = null;

  e_result = cast(i_value as float);
END;

此函数可以在普通sql中使用;案例表达式也很像您的示例:

SELECT 
  "try_cast_nvarchar_2_float"('10.34) AS casted_value,
  CASE
    WHEN "try_cast_nvarchar_2_float"(:lv_value) IS NULL
    THEN 'Cast failed'
    ELSE 'Cast succeeded'
  END AS cast_result
FROM dummy;