使用下面的選擇查詢,我可以獲得所需的結果,洗掉額外的斜線(3)
回答:
select regexp_replace(regexp_replace('p\\\\','[\\|\\\\\|\\\|\\\\]','~'),'(~~|~)','\\\\');
在 StoredProcedure 中使用相同的查詢時,它會引發錯誤:
Invalid regular expression: '[|\||\]', missing ]: [|\||\] At Statement.execute
存盤程序代碼:
create or replace procedure back_slash(something varchar)
returns varchar
language javascript
execute as caller
as
$$
var command1=`select regexp_replace(regexp_replace('p\\\\','[\\|\\\\\|\\\|\\\\]','~'),'(~~|~)','\\\\')`;
var stmt1=snowflake.createStatement({sqlText: command1});
var rs1=stmt1.execute();
return 'successfully removed extra backslashs'
$$;
uj5u.com熱心網友回復:
所以這:
select regexp_replace(regexp_replace('p\\\\','[\\|\\\\\|\\\|\\\\]','~'),'(~~|~)','\\\\');
回傳:
p\
像這樣更改您的存盤程序:
create or replace procedure back_slash(X1 varchar)
returns varchar
language javascript
execute as caller
as
$$
var command1="select regexp_replace(regexp_replace('p\\\\','[\\|\\\\\|\\\|\\\]','~'),'(~~|~)','\\\\')";
var stmt1=snowflake.createStatement({sqlText: command1});
var rs1=stmt1.execute();
rs1.next();
return rs1.getColumnValue(1);
$$;
它會起作用。觀察我在]之前洗掉了一個\。
call back_slash('x');
結果:
p\
uj5u.com熱心網友回復:
Snowflake SQL 使用反斜杠作為轉義字符。要在 Snowflake SQL 中表示單個反斜杠,您必須使用兩個\\.
JavaScript 還使用反斜杠作為轉義字符。要通過 JavaScript 在 Snowflake SQL 中表示單個反斜杠,您必須使用 2x2=4 反斜杠\\\\
參考這個問題和答案:
在程式編譯期間雪花去除反斜杠?
create or replace procedure back_slash(X1 varchar)
returns varchar
language javascript
execute as caller
as
$$
var command1="select regexp_replace(regexp_replace('p\\\\\\\\','[\\\\|\\\\\\\\\\|\\\\\\|\\\\\\\\]','~'),'(~~|~)','\\\\\\\\')";
var stmt1=snowflake.createStatement({sqlText: command1});
var rs1=stmt1.execute();
rs1.next();
return rs1.getColumnValue(1);
$$;
call back_slash('p\\\\');
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349956.html
