在 Redshift 的 WITH 变量中使用时 LPAD 函数错误

LPAD function errors when used in WITH variable in Redshift

你能告诉我为什么这会在 Redshift 中引发错误吗?

WITH Testing_PADDING AS (SELECT '12345678' AS column1)
SELECT LPAD(column1, 9,'0') FROM Testing_PADDING;

这是我收到的错误:

“无效操作:未能找到从“未知”到文本的转换函数;”

Redshift 无法根据上下文确定数据类型,因此您需要明确设置它

WITH Testing_PADDING AS (SELECT '12345678'::text AS column1)
SELECT
    LPAD(column1, 9, '0')
FROM Testing_PADDING;

我怀疑您的其中一个字符串未被视为文本 - 可能是 column1 文本。 (抱歉没有集群不测试)

尝试:

WITH Testing_PADDING AS (SELECT '12345678'::text AS column1)
SELECT LPAD(column1, 9,'0'::text) FROM Testing_PADDING;