在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中具有完全相同的逻辑。
有什么想法吗?
答案 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;