偶遇一个需求:想按某个指定符号分割之后,提取字符。
例如:tag = '休闲,娱乐,运动,玩耍',想提取"休闲"这个词。
方法一:string_to_array
select string_to_array('休闲,娱乐,运动,玩耍',',');
------------------------------
-- {休闲,娱乐,运动,玩耍}
-- (1 row)
select tag[1] from (
select string_to_array('休闲,娱乐,运动,玩耍',',')
as tag ) a
---------------------
-- 休闲
-- (1 row)
如此实现,但是string_to_array需要子查询,当与其他自动group by一起查询的时候就显得及其不方便,因此可使用方法二。
方法二:split_part
select split_part('休闲,娱乐,运动,玩耍',',',1);
-----------------
-- 休闲
-- (1 row)
select split_part('abc~@~def~@~ghi','~@~',2)
-----------------
-- def
-- (1 row)
END 2018-08-01 17:03:18