Как сопоставить столбец a и столбец b из той же таблицы в BigQuery по совпадению подстроки - PullRequest
0 голосов
/ 21 апреля 2020

Я использую # стандарт SQL BigQuery. Я пытался использовать LIKE, но не смог добиться совпадения.

У меня есть таблица ниже, я пытаюсь написать запрос в BigQuery, где, если столбец A содержится в столбце B, тогда я хочу выходной столбец C со строкой из столбца A ИЛИ '1'. В случае, если между столбцом A и столбцом B нет совпадения, я бы хотел получить столбец B ИЛИ «0» в выходном столбце C.


id    |    Column A   |   Column B
1     |    John    |    Alex, John
3     |    Cerci   |    Cerci  
5     |    Mike   |    Mike 
2     |    Simi    |    Expatri  
6     |    Hazel    |    Expatri, Hazel  
4     |    Bald   |    Hair
7     |    Cam   |    Ambrose, Cam 

Чего бы я в идеале хотел бы

id    |    Column A   |   Column B  | **Column C**
1     |    John    |    Alex, John | John
3     |    Cerci   |    Cerci  | Cerci
5     |    Mike   |    Mike | Mike
2     |    Simi    |    Expatri  | Expatri
6     |    Hazel    |    Expatri, Hazel  | Hazel
4     |    Bald   |    Hair | Hair
7     |    Cam   |    Ambrose, Cam | Cam

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT *, 
  IF(REGEXP_CONTAINS(Column_B, Column_A), Column_A, Column_B) AS Column_C
FROM `project.dataset.table`   

Применительно к выборочным данным из вашего вопроса - вывод

Row id  Column_A    Column_B        Column_C     
1   1   John        Alex, John      John     
2   3   Cerci       Cerci           Cerci    
3   5   Mike        Mike            Mike     
4   2   Simi        Expatri         Expatri  
5   6   Hazel       Expatri, Hazel  Hazel    
6   4   Bald        Hair            Hair     
7   7   Cam         Ambrose, Cam    Cam  
0 голосов
/ 21 апреля 2020

Используйте выражение CASE:

SELECT
    id,
    A,
    B,
    CASE WHEN B LIKE '%' || A || '%' THEN A ELSE B END AS C
FROM yourTable
ORDER BY id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...