Loading

La barra diagonal inversa como carácter de escape no funciona con el parámetro para establecer expresiones regulares en SQL personalizado (Google BigQuery)

Fecha de publicación: Aug 24, 2022
Descripción
La barra diagonal inversa como carácter de escape en un parámetro no funciona como se esperaba cuando se usa una expresión regular en un SQL personalizado en Google BigQuery.

Por ejemplo:

- Datos de muestra [Tabla]:
Columna
aa
a.

-SQL personalizado:
select * from Table where regexp_contains(Column,r<parameter>)

- Parámetro:
a\.

- Resultado esperado:
Columna
a.

- Resultado real:
No se muestra registro

* Si el parámetro se establece como 'a.' sin la barra diagonal inversa como carácter de escape, el resultado será el siguiente: 
Columna
aa
a.


 

Cause

Esto se debe a la sintaxis de la expresión regular usada en Google BigQuery, como se muestra a continuación:
REGEXP_CONTAINS(sample, r"@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+")
https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#regexp_contains

Tenga en cuenta que hay una 'r' delante de la expresión regular.
Sin embargo, al usar un parámetro para establecer la expresión regular, la barra diagonal inversa como carácter de escape no funciona como se esperaba.
Si elimina la 'r', la barra diagonal inversa como carácter de escape funciona según lo esperado.
Solución
Cambie el SQL personalizado
---------------------
select * from Table where regexp_contains(Column,r<parameter>)
---------------------
A
---------------------
select * from Table where regexp_contains(Column,<parameter>)
---------------------
* Elimine la 'r'
 
Número del artículo de conocimiento

001474430

 
Cargando
Salesforce Help | Article