• PostgreSQL 一些比较好用的字符串函数


        最近刚接触到PostgreSQL数据库,发现很多功能比较强大的内置函数,特此记录下来。示例下次再补。

    1.concat

    字符串连接函数

    2.concat_ws

    concat_ws函数连接可自定义分隔符

    3.rpad | lpad

    字符串填充或者缩短,如

    rpad(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假如字符串的长度大于len,则返回值被缩短到与len字符相同的长度。

    4.split_part 

    字符串分割,根据特定字符,指定位置返回值。split_part('1,2,3,4',',',3) 返回3

     

    5.regexp_split_to_table

    根据特殊字符,将字符串分割成表

     

    6.regexp_split_to_array

    根据特殊字符,将字符串分割成数据

     

    图来自网络

    select regexp_split_to_table(coalesce('/home/postgres/pg_basebackup.sh',''),E'/') 
    ;  
    
            regexp_split_to_array        
    -------------------------------------
     {"",home,postgres,pg_basebackup.sh}
    (1 row)
    
    Time: 0.315 ms
    

    7.ARRAY_AGG

    把表达式变成一个数组 一般配合 array_to_string() 函数使用

     

     

    8.STRING_AGG

    string_agg(expression, delimiter) 直接把一个表达式变成字符串

     

    9.ARRAY

    array(SELECT att.name FROM ay_tree_test2 att) 即把查询出来的name字段转化成array数组

     

    10.array_to_string

    array_to_string(“数组”,”/”) 即把数组转化为字符串,并用“/”连接(使用提供的分隔符连接数组元素)

     

    11.position

      子串在一字符串中的位置,position('om' in 'Thomas') = 3

    12.overlay

    替换字符串中任意长度的子字串为新字符串

     

    13.trim

    去除尽可能长开始,结束或者两边的某类字符,默认为去除空白字符,当然可以自己指定,可同时指定多个要删除的字符串
    例子:trim(both 'x' from 'xTomxx') = Tom

    14.btrim

    去除字符串两边的所有指定的字符,可同时指定多个字符
    例子:btrim('xyxtrimyyx', 'xy') = trim

    15.quote_literal

    将一数值转换为字符串,并为其两边加上单引号,如果数值中间出现了单引号,也会被表示成两个单引号
    例子:quote_literal(42.5) = '42.5'

    16.regexp_replace

    利用正则表达式对字符串进行替换
    例子:regexp_replace('Thomas', '.[mN]a.', 'M') = ThM

    17.repeat

    重复字符串一指定次数
    例子:repeat('Pg', 4) = PgPgPgPg

    18.strpos

    指定字符串在目标字符串的位置
    例子:strpos('high', 'ig') = 2

    19.generate_series

    PostgreSQL 中有一个很有用处的内置函数generate_series,可以按不同的规则产生一系列的填充数据。

    函数参数类型返回类型描述
    generate_series(start, stop) int 或 bigint setof int 或 setof bigint(与参数类型相同) 生成一个数值序列,从start 到 stop,步进为一
    generate_series(start, stop, step) int 或 bigint setof int 或 setof bigint(与参数类型相同) 生成一个数值序列,从start 到 stop,步进为step
    generate_series(start, stop, step_interval) timestamp or timestamp with time zone timestamp 或 timestamp with time zone(same as argument type) 生成一个数值序列,从start 到 stop,步进为step
    david=# select generate_series(1, 10);
     generate_series 
    -----------------
                   1
                   2
                   3
                   4
                   5
                   6
                   7
                   8
                   9
                  10
    (10 rows)
  • 相关阅读:
    Spring国际化模块
    广告牌 循环 轮播 图片
    ImageLoader 网络加载图片
    ProgressBar 进度条 旋转
    UI处理 线程
    权限 动态 访问
    系统 状态栏 导航栏
    对话框 dialog 整理
    修改 字体
    获取 Activity中所有的View ViewGroup
  • 原文地址:https://www.cnblogs.com/VicLiu/p/11941262.html
Copyright © 2020-2023  润新知