在SQL server中,有TRY_CAST方法可用于检查是否可以强制转换。如果无法强制转换,则会将NULL设置为值。
普雷斯托有类似的方法吗?或者如何在presto中实现类似的行为?
这个函数已经存在很多年了。你可以在文档中找到它。
SELECT try_cast('abc' AS bigint)
=>
_col0
-------
NULL
(1 row)
我尝试使用TRY_CAST将字符串转换为时间戳,并将其与我自己的转换代码进行比较。
select
CASE
WHEN LENGTH(received)<3
THEN NULL
ELSE DATE(DATE_PARSE(substr(received, 1,10), '%m/%d/%Y'))
END AS "RECEIVED_CV"
,DATE(TRY_CAST(received AS TIMESTAMP)) AS RECEIVED
from (table)
结果非常有趣。我的代码将产生日期,但TRY_CAST将产生null。原始字符串值是这样的";2021年5月2日15:45:57.000000";
结果的比较