如何用Presto SQL提取纯数字字符串?解决LIKE查询无结果问题
Presto SQL 提取纯数字字符串的正确方法
你的查询没有返回结果,是因为Presto的LIKE操作符不支持正则表达式语法,它仅支持%(匹配任意长度字符)和_(匹配单个字符)这两种通配符,[0-9]*会被当作字面量字符串去匹配,自然找不到对应数据。
以下是两种可行的实现方式:
方法一:使用正则匹配函数regexp_like
通过正则表达式精准匹配整个字符串仅包含数字的记录:
SELECT string FROM table1 WHERE regexp_like(string, '^[0-9]+$') GROUP BY string
^匹配字符串开头[0-9]+匹配1个或多个数字$匹配字符串结尾
三者结合确保字符串从开头到结尾全是数字,没有其他字符。
方法二:利用类型转换判断
尝试将字符串转为数值类型,转换成功说明是纯数字:
SELECT string FROM table1 WHERE cast(string AS bigint) IS NOT NULL GROUP BY string
这种方法适合处理整数类型的纯数字字符串,如果需要支持小数,可以把bigint换成double。
内容的提问来源于stack exchange,提问作者Nuno Miguel Oliveira Milhomens
相关产品推荐
相关产品推荐

