- 类别:
TRY_TO_DECIMAL、TRY_TO_NUMBER、TRY_TO_NUMERIC¶
TO_DECIMAL、TO_NUMBER、TO_NUMERIC 的特殊版本,它执行相同的操作(即将输入表达式转换为定点数),但支持错误处理(即,如果无法执行转换,它将返回 NULL 值而不是引发错误)。
这些函数为同义函数。
有关更多信息,请参阅 错误处理转换函数。
语法¶
实参¶
必填:
string_expr类型 VARCHAR 的表达式。
可选:
format用于解析输入
expr和返回的 SQL 格式模型。有关更多信息,请参阅 SQL 格式模型。precision生成的数字中十进制位数的最大数目;从 1 到 38。在 Snowflake 中,不使用精度来确定存储数字所需的字节数,并且对效率没有任何影响,因此默认值为最大值 (38)。
scale小数十进制位数(从 0 到
precision- 1)。0 表示没有小数位数(即整数)。默认小数位数为 0。
返回¶
The function returns a value of type NUMBER with the following defaults:
如果未指定
precision,则默认为 38。如果未指定
scale,则默认为 0。
If the conversion can't be performed or the input is NULL, returns NULL.
使用说明¶
输入必须是字符串表达式。
示例¶
第一个示例失败,因为最后一列 (dec_with_range_error) 没有存储足够的有效数字来保存要求保存的值。
下一个查询与上一个查询相同,只是使用 TRY_TO_DECIMAL 而不是 TO_DECIMAL,因此会将超出范围的值转换为 NULL。
下一个示例失败,因为输入字符串包含美元符号和一个逗号来分隔数字组,而不仅仅是数字和小数点。但最后一列的格式说明符并没有告诉 TO_DECIMAL 函数预期会出现美元符号。
下一个查询与上一个查询相同,只是使用 TRY_TO_DECIMAL 而不是 TO_DECIMAL,因此会将输入值转换为 NULL。
The following example fails because the input expression contains characters that aren't digits:
下一个查询与上一个查询相同,只是使用 TRY_TO_DECIMAL 而不是 TO_DECIMAL,因此会将输入值转换为 NULL。
You can perform the conversion if you specify the X format element with the TO_DECIMAL or TRY_TO_DECIMAL function to convert a hexadecimal value to a decimal value:
For additional examples, see TO_DECIMAL、TO_NUMBER、TO_NUMERIC.