在 VALUES 子句中使用 REPEAT/SPACE 的雪花

Snowflake using REPEAT/SPACE inside VALUES clasue

单列简单场景table:

CREATE OR REPLACE TABLE t1(c VARCHAR(200));

INSERT INTO t1(c) SELECT repeat('a',100); -- works 
INSERT INTO t1(c) VALUES (repeat('a',100)); -- error

INSERT INTO t1(c) SELECT space(100); -- works
INSERT INTO t1(c) VALUES (space(100)); -- error

SELECT c, LENGTH(c) FROM t1;

SQL compilation error: Invalid expression [LPAD('', CAST(100 * (CAST(LENGTH('a') AS NUMBER(18,0))) AS NUMBER(21,0)), 'a')] in VALUES clause

expressions/function 调用可以与 INSERT ... VALUES 一起使用是否有限制,或者这只是一个错误?

这些表达式似乎是简单的字符串函数,但从编译器翻译函数的方式来看,它似乎不再是简单的函数。

Most simple arithmetic expressions and string functions can be evaluated at compile time, but most other expressions cannot.

你为什么不使用变量?

set my_spaces=(SELECT space(100)); 
set my_aaaa= (SELECT repeat('a',100)); 

CREATE OR REPLACE TABLE t1(c VARCHAR(200)); 

INSERT INTO t1(c) SELECT repeat('a',100); -- works 

INSERT INTO t1(c) VALUES ($my_aaaa); -- works

INSERT INTO t1(c) SELECT space(100); -- works 

INSERT INTO t1(c) VALUES ( $my_spaces ); -- works

SELECT c, LENGTH(c) FROM t1;