为何创建Snowflake函数KEY_GENEREATOR失败?语法错误排查
问题解决:Snowflake函数创建语法错误
错误原因
你遇到的语法错误是因为函数体用单引号包裹,但内部的单引号未正确转义。在Snowflake的SQL字符串规则中,若要在单引号包裹的字符串里表示一个单引号,必须使用两个连续单引号,否则会导致字符串提前终止,后续字符被识别为无效语法。
修正后的函数代码
CREATE OR REPLACE FUNCTION KEY_GENEREATOR() RETURNS BIGINT LANGUAGE SQL AS ' SELECT CAST(CONCAT(REVERSE(replace(cast(cast(current_timestamp as date) as varchar),''-'','''')),RIGHT(REPEAT(''0'',12)||(CAST(key_seq.nextval AS VARCHAR(12))),12))AS BIGINT) ';
关键修正点
- 原代码中
replace(..., '-', '')里的单引号改为''-''和'''' - 原代码中
REPEAT('0',12)里的单引号改为''0''
修改后Snowflake可正确解析函数体中的字符串,避免语法错误。
内容的提问来源于stack exchange,提问作者Patrik
相关产品推荐
相关产品推荐

