首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串中提取子字符串

从字符串中提取子字符串
EN

Stack Overflow用户
提问于 2017-03-09 22:07:59
回答 2查看 3.6K关注 0票数 1

在google-bigquery中,我需要拉取位于**和**之间的字符串,如下面的示例所示,该字符串位于列"Site_Data“下。

有人能帮帮我吗?10倍!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-09 22:25:19

请参见下面的示例

代码语言:javascript
运行
复制
#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
票数 6
EN

Stack Overflow用户

发布于 2017-03-09 22:27:43

是否所有字符串都具有该格式?有几个不同的选项,假设您总是需要**分隔符后面的第三个字符串。

1)使用SPLIT,例如:

代码语言:javascript
运行
复制
#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,例如:

代码语言:javascript
运行
复制
#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

代码语言:javascript
运行
复制
#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
);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42697493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档