Loading

매개 변수를 사용해 사용자 지정 SQL(Google BigQuery)에서 정규식을 설정하면 백슬래시 이스케이프가 작동하지 않음

게시 일자: Aug 24, 2022
상세 설명
Google BigQuery에서 정규식을 사용자 지정 SQL에 사용하는 경우 매개 변수에서 백슬래시를 이스케이프하면 올바르게 작동하지 않습니다.

예를 들면 다음과 같습니다.

-샘플 데이터[테이블]:

aa
a.

-사용자 지정 SQL:
select * from Table where regexp_contains(Column,r<parameter>)

-매개 변수:
a\.

-올바른 결과:

a.

-실제 결과:
반환되는 레코드 없음

*백슬래시를 이스케이프하지 않고 매개 변수를 'a.'로 설정하면 결과는 다음과 같습니다. 

aa
a.


 

Cause

원인은 Google BigQuery에서 사용되는 아래와 같은 정규식 구문 때문입니다.
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

정규식 앞에 'r'가 있습니다.
하지만 매개 변수를 사용하여 정규식을 설정하면 백슬래시 이스케이프가 올바르게 작동하지 않습니다.
'r'를 제거하면 백슬래시 이스케이프가 올바르게 작동합니다.
솔루션
다음 사용자 지정 SQL을
---------------------
select * from Table where regexp_contains(Column,r<parameter>)
---------------------
다음과 같이 변경합니다.
---------------------
select * from Table where regexp_contains(Column,<parameter>)
---------------------
*'r' 제거
 
Knowledge 기사 번호

001474430

 
로드 중
Salesforce Help | Article