Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
¿Snowflake elimina las barras diagonales inversas durante la compilación del procedimiento?

Por alguna razón, Snowflake está eliminando las barras diagonales inversas de mi función regex, pero solo cuando coloco la función entre "$$" al crear un procedimiento de Javascript.

Para el contexto aquí está mi función Regex:

 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); ';

Cuando lo ejecuto simplemente en SQL, funciona; cambiará "APPLE.com" a "APPLE".

 SELECT REXP_REPLACE_ME('APPLE.COM','\\.[AZ]{2,3}',' ') -- the regex pattern \\.[AZ]{2,3} is meant to remove domains ie ".com",".org", etc..

Sin embargo, cuando lo ejecuto dentro de $$ de un procedimiento almacenado, elimina las barras invertidas de mi patrón de expresiones regulares y, en consecuencia, cambia el patrón de expresiones regulares por completo.

Mi expresión regular cambia de \\.[AZ]{2,3} a -> .[AZ]{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','\\.[AZ]{2,3}',' ') as column_cleaned -- ,REXP_REPLACE_ME_WTF('APPLE.COM','\\.[AZ]{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

Rascándome la cabeza aquí, creé esta función para mostrar qué patrón estaba generando y así es como llegué a la conclusión (puedo estar equivocado aquí...) que cuando Snowflake está compilando está eliminando la barra invertida...

 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; ';

¿Algunas ideas?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Snowflake SQL usa \ como carácter de escape, por lo que para representar una barra invertida en Snowflake SQL debe usar \\ .

JavaScript también usa \ como carácter de escape, por lo que para representar una barra invertida en JavaScript también debe usar \\

Si desea representar una sola barra invertida en Snowflake SQL a través de JavaScript, debe enviar 2 x 2 = 4 barras invertidas \\\\

about 4 years ago · Juan Pablo Isaza Report

0

Probablemente algo relacionado con los personajes de escape, etc.

Intente envolver su instrucción SQL con acentos graves en lugar de comillas simples: ``

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!