我正在使用Presto SQL拆分看起来像这样的字母数字字符串 AB1234CD到AB1234 JA4567EF.8至JA4567
我正在尝试删除字母以及字符串末尾的所有字母。
答案 0 :(得分:1)
根据您提供的示例,您想保留
随后丢弃所有内容。
为此regexp_extract
非常合适。
presto:default> SELECT regexp_extract('AB1234CD', '^[a-zA-Z]*[0-9]*');
_col0
--------
AB1234
(1 row)
(在Presto 322上测试)
答案 1 :(得分:0)
看到示例并进行查询后,可以有两种可能的解决方案:
查询的以下部分用于生成测试数据,您可以将其替换为选择查询。
WITH dataset AS (
SELECT CAST(ROW('ABC12345DE') AS ROW(id VARCHAR)) AS data)
对于第一个解决方案,有两种可能性要么提取首次出现的情况,要么提取所有可能的字符串:
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
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
第二个解决方案:
with dataset AS (
SELECT CAST(ROW('AB1234CDE') AS ROW(id VARCHAR)) AS data )
select substr(data.id, 1, 6) as str from dataset