任何人都可以解释为什么 Snowflake 中的 to_varchar 函数在输出前面添加空格:
例如,
SELECT TO_VARCHAR(10101, '000000');
-- ouput: ' 010101'
SELECT LEN(TO_VARCHAR(10101, '000000'))
-- ouput: 7
我可以用 TRIM 包装它,但想了解行为而不是添加不必要的功能
您在 TO_VARCHAR(10101, '000000') 返回“010101”(带有前导空格)时看到的行为是因为 Snowflake 在数字为正数时默认添加一个空格,为潜在的负号留出空间。
TO_VARCHAR(10101, '000000') 根据模式 '000000' 设置数字 10101 的格式,这确保数字用前导零填充,总长度为 6 个字符。结果是“010101”,但由于它是正数,因此在前面为潜在的负号保留了一个空格。因此,结果是“010101”(带有前导空格)。
由于存在空格,函数 LEN(TO_VARCHAR(10101, '000000')) 返回 7。
您可以参考雪花文档以获取更多信息:雪花文档示例