Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

256
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda