gpt4 book ai didi

javascript - 在程序编译期间雪花去除反斜杠?

转载 作者:行者123 更新时间:2023-12-04 12:17:51 27 4
gpt4 key购买 nike

出于某种原因,Snowflake 正在从我的正则表达式函数中删除反斜杠,但仅当我在创建 Javascript 过程时将函数放在“$$”之间时。
对于上下文,这是我的正则表达式函数:

CREATE OR REPLACE FUNCTION "REGEX_REPLACE_ME"("SUBJECT" VARCHAR(16777216), "PATTERN" VARCHAR(16777216), "REPLACEMENT" VARCHAR(16777216))
RETURNS VARCHAR(16777216)
LANGUAGE JAVASCRIPT
AS '

const p = SUBJECT;
let regex = new RegExp(PATTERN, ''i'')
return p.replace(regex, REPLACEMENT);
';
当我简单地在 SQL 中运行它时,它可以工作;它将“APPLE.com”更改为“APPLE”。
SELECT REXP_REPLACE_ME('APPLE.COM','\\.[A-Z]{2,3}',' ') -- the regex pattern \\.[A-Z]{2,3} is meant to remove domains i.e. ".com",".org", etc.. 
但是,当我在存储过程的 $$ 中运行它时,它会从我的正则表达式模式中删除反斜杠,从而完全改变正则表达式模式。
我的正则表达式从 \\.[A-Z]{2,3} 更改至-> .[A-Z]{2,3}
CREATE or replace PROCEDURE TESTING_FUNC_1_THIS_CAN_BE_DELETED()
RETURNS VARCHAR
LANGUAGE javascript
AS
$$

var rs = snowflake.execute( { sqlText:
`
CREATE OR REPLACE VIEW Database.Schema.Table AS

SELECT REXP_REPLACE_ME('APPLE.COM','\\.[A-Z]{2,3}',' ') as column_cleaned
-- ,REXP_REPLACE_ME_WTF('APPLE.COM','\\.[A-Z]{2,3}',' ') AS WHAT_PATTERN_IS_BEING_OUTPUTTED -- function logic in code block below

`
} );
$$;

call TESTING_FUNC_1_THIS_CAN_BE_DELETED();

select * from Database.Schema.Table
在这里挠头,我创建了这个函数来显示它输出的模式,这就是我得出结论的方式(我在这里可能是错的......)当 Snowflake 编译时它正在删除反斜杠......
CREATE OR REPLACE FUNCTION "REXP_REPLACE_ME_WTF"("SUBJECT" VARCHAR(16777216), "PATTERN" VARCHAR(16777216), "REPLACEMENT" VARCHAR(16777216))
RETURNS VARCHAR(16777216)
LANGUAGE JAVASCRIPT
AS '

const p = SUBJECT;
let regex = new RegExp(PATTERN, ''i'');
//return p.replace(regex, REPLACEMENT);
return PATTERN;
';
有任何想法吗?

最佳答案

Snowflake SQL 使用\作为转义字符,因此要在 Snowflake SQL 中表示反斜杠,您必须使用 \\ .
JavaScript 也使用\作为转义字符,因此要在 JavaScript 中表示反斜杠,您还必须使用 \\如果要通过 JavaScript 在 Snowflake SQL 中表示单个反斜杠,则必须发送 2 x 2 = 4 个反斜杠 \\\\

关于javascript - 在程序编译期间雪花去除反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69485070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com