Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

258
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda