2017-03-09 174 views

回答

2

参见下面的例子

#standardSQL 
WITH yourTable AS (
    SELECT '756-1__6565656565656, tagtype**unmapped,domain**www.sport.com,userarriveddirectly**False' AS Site_Data 
) 
SELECT 
    REGEXP_EXTRACT(Site_Data, r'domain\*\*(.*)\*\*') AS x, 
    Site_Data 
FROM yourTable 
+0

10x Mikkhai!有效 :) –

2

是否所有的琴弦有格式?假设您总是需要**定界符后面的第三个字符串,有几个不同的选项。

1)使用SPLIT,如:

#standardSQL 
WITH SampleData AS (
    SELECT '756-1__67648582789116,tagtype**unmapped,domain**www.sport.com,userarriveddirectly**False' AS site_data 
) 
SELECT SPLIT(site_data, '**')[OFFSET(2)] AS visit_type 
FROM SampleData; 

2)使用REGEXP_EXTRACT,如:

#standardSQL 
WITH SampleData AS (
    SELECT '756-1__67648582789116,tagtype**unmapped,domain**www.sport.com,userarriveddirectly**False' AS site_data 
) 
SELECT REGEXP_EXTRACT(site_data, r'[^\*]+\*\*[^\*]+\*\*([^\*]+)') AS visit_type 
FROM SampleData; 

采取此基础上更进一步,如果你想分裂域和到达类型,您可以再次使用SPLIT

#standardSQL 
WITH SampleData AS (
    SELECT '756-1__67648582789116,tagtype**unmapped,domain**www.sport.com,userarriveddirectly**False' AS site_data 
) 
SELECT 
    SPLIT(visit_type)[OFFSET(0)] AS domain, 
    SPLIT(visit_type)[OFFSET(1)] AS arrival_type 
FROM (
    SELECT SPLIT(site_data, '**')[OFFSET(2)] AS visit_type 
    FROM SampleData 
);