相关文章推荐
坏坏的眼镜  ·  【Unity】2D ...·  1 月前    · 
谦虚好学的脸盆  ·  2021-06-28 ...·  8 月前    · 

1、字符串截取substr

presto语法:

substr(string, start, length) → varchar 如: select substr('1599319787151',1,10)

substr(string, start) → varchar 如: select substr('1599319787151',1)

而hive中:substr和substring都可以使用

2、字符串替换regexp_replace

presto语法:

regexp_replace( string , pattern , replacement ) → varchar

如:select  regexp_replace('{\\"over\\":\\"0\\",\\"seckill\\":\\"0\\"}','\\','')

3、字符串首次出现位置position(下标从1开始的)

presto语法:

position(substring IN string) → bigint  如:select position('aa' in '15993aa1978715aa1')

而hive中:select INSTR('15993aa1978715aa1','aa')

4、字符串连接concat

presto语法:concat(string1, ..., stringN) → varchar  如:select  concat('kk','rrr')

而hive中除了concat,还有concat_ws按分隔符分割,如:select concat_ws("-","iii","rrr","kkk")

5、字符串分割split

presto语法:

split(string, delimiter) -> array(varchar)  如:SELECT split('a,b,c,d',',')  得到:[a, b, c, d]

split_part(string, delimiter, index) → varchar 如:SELECT split_part('a,b,c,d',',',2)  得到:b

String Functions and Operators — Presto 0.277 Documentation https://prestodb.io/docs/current/functions/string.html

Regular Expression Functions — Presto 0.277 Documentation https://prestodb.io/docs/current/functions/regexp.html?highlight=regexp_replace#id3

$ presto = new Presto Client(); $data = $ presto ->querySql('select count(user_id) from xx.xx'); //库名.表名 var_dump($data);die(); select split_part(' 国/广东/深圳', '/', cardinality(split(' 国/广东/深圳', '/'))) as department_name;select substring_index(' 国/广东/深圳', '/', -1) as department_name; 在 Presto ,可以使用 split_part 函数 按照指定的分隔符截取 字符串 。具体语法如下:split_part(string, delimiter, index)其 ,string 表示要截取的 字符串 ,delimiter 表示分隔符,index 表示要返回的子 字符串 在分隔符分割后的序号,序号从 1 开始。例如,如果要按照逗号 , 分隔 字符串 hello,world, presto 并获取第... lower(string) 返回 字符串 的小写格式 upper(string) 返回给定 字符串 的大写格式 lpad(string,size,padstring) 给定 字符串 的左填充 rpad(string,size,padstring) 给定 字符串 的右填充 ltrim(string) 从 字符串 删除字符左侧空格 rtrim(string) 从 字符串 删除字符右侧空格 trim( 都是sql,基本逻辑是一样的,常常出现问题是因为两边都 函数 不同导致 hive sql没法在 presto 引擎下执行。 在我的使用场景 ,一些 常见 的需要替换的 函数 ,现记录下。 主要参考资料还是官方文档: Presto 0.246 Documentation 时间转换相关的 函数 : 这里format的格式很奇怪,本来date_parse和date_format是一样的, ** 但是我这用到的format却不一样,你们用的是那个格式的format?** -- presto # 时间 字符串 转 时间戳 select to_u 568810800017635002 210100026066367206 568810800017635002 210100026070369019 568810800017635002 210100026038823395 568810800017635002 210100026038921817 568811800170738001 210100016048730468 568811800170738001 1、 字符串截取 substr presto 语法: substr(string, start, length) → varchar   如: select substr(‘1599319787151’,1,10) substr(string, start) → varchar        如: select substr(‘1599319787151’,1) 而 hive :substr和substring都可以 1、 字符串截取 substr presto : substr(string, start, length) → varchar 如: select substr('1599319787151',1,10) 功效:返回 字符串 A从下标start位置开始,长度为len的 字符串 substr(string, start) → varchar 如: select substr('1599319787151',1) 功效:返回 字符串 A从下标start位置到结尾的 字符串 ps:对String来说,...