Как использовать подзапрос в операторе LIKE в Impala? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть таблица поиска, которая содержит запрещенные значения / строки и номер правила, который показывает, где значение не может встретиться. Так, например, у меня есть значение «C / O», и этого не может быть нигде в поле имени. У меня также есть почтовый ящик, который не может быть указан в адресе. Я пытаюсь создать отчет о качестве данных, чтобы отметить эти значения без жесткого кодирования. Я пробовал:

Select 
A.name
,A.address
From customer A
Where a.name LIKE (Select concat(‘%’, exclusion_value, ‘%’) from DQ_lookup where rule_number=2)
Or a.address LIKE (Select concat(‘%’, exclusion_value, ‘%’) from DQ_lookup where rule_number=1)

Это не удается. Как, если я вообще смогу заставить это работать?

1 Ответ

0 голосов
/ 14 июля 2020

Для сопоставления шаблонов в улье вам нужно будет использовать rlike.

A RLIKE B : NULL, если A или B NULL, TRUE, если есть (возможно empty) подстрока A соответствует Java регулярному выражению B, иначе FALSE. Например, 'foobar' RLIKE 'foo' оценивается как ИСТИНА, как и 'foobar' RLIKE '^ f. * R $'.

Что-то вроде того, что показано ниже.

Select 
 A.name,
 A.address
From customer A
Where 
 a.name RLIKE (Select exclusion_value from DQ_lookup where rule_number=2)
 OR a.address RLIKE (Select exclusion_value from DQ_lookup where rule_number=1)

Примечание: exclusion_value должен быть выражением регулярного выражения.

...