就是对字符串进行分割,分割成数组进行操作,分割成行数据进行操作。这里简单介绍几个这两天学习到的方法,均是对字符串进行分割。
regexp_split_to_array('被分割的字符串', '分割符')
SELECT arr from regexp_split_to_array('a,b,c', ',') as arr
结果为 {a,b,c}
如果想单独获取分割后数组指定索引对应的字符串,这里的索引和 java 的数组索引不同,java 数组的索引是从 0 开始,而 postgre 的索引是从 1 开始,如果索引越界去获取,不会报错,但是会返回 null。
SELECT arr[1] from regexp_split_to_array('a,b,c', ',') as arr
结果为 a
SELECT arr[0] from regexp_split_to_array('a,b,c', ',') as arr
结果为null
这个方法是将字符串分割成行数据,分割后可以对行数据进行 in 查询
regexp_split_to_table('被分割的字符串', '分割符')
select * from regexp_split_to_table('a,b,c' ,',')
结果为 a,b,c
in查询
SELECT
*
FROM
某表
WHERE
某字段 IN ( SELECT * FROM regexp_split_to_table( 'a,b,c', ',' ) )
这个方法分割字符串后获取指定位置的字符串
select split_part('被分割的字符串' ,'分隔符', 位置索引)
select split_part('a,b,c', ',', 2)
结果为b
char_length( string )
简单易懂