1

在 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 中具有完全相同的逻辑。

有任何想法吗?

4

1 回答 1

3

到目前为止,据我所知,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中使用;在您的示例中也使用 case 表达式:

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;
于 2019-04-16T08:23:22.150 回答