2014-11-18 3 views
1

У меня есть база данных, которая выглядит какBigQuery: Как увидеть часть строки?

Alex,Anna,Peter 
Alex 
Alex,Peter 
Alfons 
Algebra,Geometry 
Algebra,Physics 

Однако я заинтересован только в первом выражении до запятой. Значение мой идеальный ответ будет:.

Alex 
Alex 
Alex 
Alfons 
Algebra 
Algebra 

До сих пор я нашел функцию SPLIT, но она по-прежнему возвращает мне кучу значений я действительно не заинтересованы в Как заставить ее работать эффективно?

Благодаря

ответ

2
SELECT first(split(s,',')) 
FROM 
    (SELECT 'Alex,Anna,Peter' AS s), 
    (SELECT 'Algebra,Geometry' AS s); 

Выходы:

Alex  
Algebra 
0

SPLIT может быть дорогим, так как он переводит строку в многократном поле, так что здесь еще два альтернативных решения:

SELECT IFNULL(LEFT(s, INSTR(s, ',') - 1), s) 
FROM 
    (SELECT 'Alex,Anna,Peter' AS s), 
    (SELECT 'Algebra,Geometry' AS s), 
    (SELECT 'Alfons' AS s) 

и

SELECT REGEXP_EXTRACT(s, r'([^,]*)') 
FROM 
    (SELECT 'Alex,Anna,Peter' AS s), 
    (SELECT 'Algebra,Geometry' AS s), 
    (SELECT 'Alfons' AS s) 
Смежные вопросы