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)
因为它的前面和后面都有一个隐含的零:
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` 都解析为相同的东西,不需要零。
但这似乎是解析器的失败。