首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用presto拆分字母数字字符串

使用presto拆分字母数字字符串
EN

Stack Overflow用户
提问于 2019-10-17 18:23:53
回答 2查看 1.1K关注 0票数 0

我正在使用Presto拆分一个字母数字字符串,该字符串看起来像下面的AB1234CD到AB1234 JA4567EF.8到JA4567

我正在尝试移除字母表和字符串末尾字母表之后的任何内容。

EN

回答 2

Stack Overflow用户

发布于 2019-10-17 19:24:53

根据您提供的示例,您希望保留

  • 前导字母
  • 数字在大写字母

之后

然后抛弃一切。

对此,regexp_extract是一个完美的契合。

代码语言:javascript
复制
presto:default> SELECT regexp_extract('AB1234CD', '^[a-zA-Z]*[0-9]*');
 _col0
--------
 AB1234
(1 row)

(在Presto 322上测试)

票数 1
EN

Stack Overflow用户

发布于 2019-10-19 10:32:56

在查看了示例和查询之后,可以有两种可能的解决方案:

从字母开始提取字符串,然后是numbers

  • Extract,长度为6。

查询的以下部分用于生成测试数据,您可以用select查询替换它。

代码语言:javascript
复制
  WITH dataset AS (
  SELECT CAST(ROW('ABC12345DE') AS ROW(id VARCHAR)) AS data)

对于第一个解决方案,有两种可能提取第一次出现或提取所有可能的字符串:

先提取可能的字符串

代码语言:javascript
复制
  with dataset AS (
  SELECT CAST(ROW('AB1234CDE') AS ROW(id VARCHAR)) AS data) 
  SELECT regexp_extract(data.id,'[a-zA-Z]*[1-9]*') AS str from dataset

提取所有可能的字符串

代码语言:javascript
复制
  with dataset AS (
  SELECT CAST(ROW('AB1234CDE123') AS ROW(id VARCHAR)) AS data) 
  SELECT regexp_extract_all(data.id,'[a-zA-Z]*[1-9]*') AS str from dataset

关于第二种解决办法:

提取6长串

代码语言:javascript
复制
  with dataset AS (
  SELECT CAST(ROW('AB1234CDE') AS ROW(id VARCHAR)) AS data )
  select substr(data.id, 1, 6)  as str from dataset
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58438660

复制
相关文章

相似问题

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