Snowflake存储过程If-Else块中LIKE运算符使用问题求助
问题原因
你写的Snowflake存储过程使用LANGUAGE JAVASCRIPT,代码块内必须遵循JavaScript语法,like是SQL专属运算符,JavaScript原生没有该关键字,因此触发语法报错。
修正方案
方案1:使用JavaScript原生includes()方法(对应%abc%的包含匹配逻辑)
直接替换like判断逻辑即可,修正后完整代码如下:
create or replace procedure test_stored_procedure(inputvalue varchar) returns string not null language javascript as $$ if (inputvalue.includes('abc')) { return 'valid input' } else { return 'invalid input' } $$ ;
方案2:使用正则表达式适配更复杂的模糊匹配规则
如果需要实现更灵活的模糊匹配,可以用JavaScript正则的test()方法,不同匹配规则对应写法如下:
- 对应SQL的
like 'abc%'(以abc开头):if (/^abc/.test(inputvalue)) - 对应SQL的
like '%abc'(以abc结尾):if (/abc$/.test(inputvalue)) - 对应SQL的
like '%abc%'且忽略大小写:if (/abc/i.test(inputvalue))
忽略大小写匹配的示例代码:
create or replace procedure test_stored_procedure(inputvalue varchar) returns string not null language javascript as $$ // 忽略大小写匹配是否包含abc if (/abc/i.test(inputvalue)) { return 'valid input' } else { return 'invalid input' } $$ ;
内容的提问来源于stack exchange,提问作者Sathya
相关产品推荐
相关产品推荐

