为什么 SELECT TRY_TO_NUMBER('E') 返回 0?

jon*_*anO 3 snowflake-cloud-data-platform

根据Snowflake 文档,当传递非数字值时,TRY_TO_NUMBER 应返回 NULL。但是,当传递字符串“E”时,该函数返回 0。

SELECT TRY_TO_NUMBER('E');
Run Code Online (Sandbox Code Playgroud)

结果显示 0 而不是预期的 NULL

Sim*_*rim 5

因为它的前面和后面都有一个隐含的零:

SELECT TRY_TO_NUMBER('E'),
    TRY_TO_NUMBER('1E2'),
    TRY_TO_NUMBER('0E'),
    TRY_TO_NUMBER('0E0');
Run Code Online (Sandbox Code Playgroud)

给出:

TRY_TO_NUMBER('E') TRY_TO_NUMBER('1E2') TRY_TO_NUMBER('0E') TRY_TO_NUMBER('0E0')
0 100 0 0

可能很像010.0and10和 10.0` 都解析为相同的东西,不需要零。

但这似乎是解析器的失败。