postgresql 查询集合结果用逗号分隔返回字符串处理的操作

关键字:

string_agg('' , '')

例如:

select string_agg(name||'' , ',') from sys_user

补充:PostgreSQL 字段用逗号 “,”隔开 判断是否含有某个值

Array Functions and Operators

https://www.postgresql.org/docs/9.2/functions-array.html

-- ----------------------------
-- Table structure for T_STUDENT
-- ----------------------------
DROP TABLE IF EXISTS "public"."T_STUDENT";
CREATE TABLE "public"."T_STUDENT" (
"id" int4,
"name" varchar(255) COLLATE "default",
"course" varchar(255) COLLATE "default"
)
WITH (OIDS=FALSE)
;
-- ----------------------------
-- Records of T_STUDENT
-- ----------------------------
INSERT INTO "public"."T_STUDENT" VALUES ('1', '李四', '12,45,1,66,7,89');
INSERT INTO "public"."T_STUDENT" VALUES ('2', '刘一', '1,5,8,9');
INSERT INTO "public"."T_STUDENT" VALUES ('3', '王五', '0,4,2');
INSERT INTO "public"."T_STUDENT" VALUES ('4', '张三', '1,2,5,7');
-- ----------------------------
-- Alter Sequences Owned By
-- ----------------------------
-- ----------------------------
-- Table structure for T_STUDENT
-- ----------------------------
DROP TABLE IF EXISTS "public"."T_STUDENT";
CREATE TABLE "public"."T_STUDENT" (
"id" int4,
"name" varchar(255) COLLATE "default",
"course" varchar(255) COLLATE "default"
)
WITH (OIDS=FALSE)
;
-- ----------------------------
-- Records of T_STUDENT
-- ----------------------------
INSERT INTO "public"."T_STUDENT" VALUES ('1', '李四', '12,45,1,66,7,89');
INSERT INTO "public"."T_STUDENT" VALUES ('2', '刘一', '1,5,8,9');
INSERT INTO "public"."T_STUDENT" VALUES ('3', '王五', '0,4,2');
INSERT INTO "public"."T_STUDENT" VALUES ('4', '张三', '1,2,5,7');
-- ----------------------------
-- Alter Sequences Owned By
-- ----------------------------
id name course
4	张三	1,2,5,7
1	李四	12,45,1,5,66,7,89
2	刘一	1,5,8,9
3	王五	0,4,2
SELECT * FROM "public"."T_STUDENT" WHERE string_to_array(course, ',') @> ARRAY['2','7']
结果:
id name course
4	张三	1,2,5,7
SELECT * FROM "public"."T_STUDENT" WHERE string_to_array(course, ',') <@ array['5','12','45','1','0','4','2']
结果:
id name course
3	王五	0,4,2
SELECT * FROM "public"."T_STUDENT" WHERE string_to_array(course, ',') && ARRAY['5','8','225','111']
结果:
id name course
4	张三	1,2,5,7
2	刘一	1,5,8,9

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • postgresql 实现字符串分割字段转列表查询

    在数据查询中,有一张a表存有另一张b表的id并以','隔开 如: 假设现在要关联查询关于 b表的一些信息,怎么办. 分割查询:字符串转列表函数 :regexp_split_to_table() select * from regexp_split_to_table ((select product_ids from fee_project_meal where id = 116199376233182210 ), ',') 查询后,字符串就变成了列表,然后你就可以根据这个列表去找b表的相关信息了

  • postgresql 查询字符串中是否包含某字符的操作

    先看表结构和数据: 需求: 查询出manager_id中包含某些字符的数据,此处查询manager_id包含6651545956882725395,5722501350582149881的数据, SQL语句如下: SELECT t.* from bas_cm_customer t where position('6651545956882725395' in t.manager_id) > 0 OR position ('5722501350582149881' in t.manager_id)

  • postgresql 将逗号分隔的字符串转为多行的实例

    -- 将逗号分隔的字符串转为多行 SELECT unnest(string_to_array('4513,4564,555',',')) as a1; -- array转为行 SELECT unnest(ARRAY[1,2]); SELECT * from unnest(ARRAY[1,2],ARRAY['foo','bar','baz']); 补充:PostgreSQL 行转列.列转行字符串函数.字符串分割函数 本文主要介紹PostgreSQL 的行转列.列转行以及字符串切割函数,实际业务中对

  • PostgreSQL 使用raise函数打印字符串

    raise函数 在PostgreSQL中,该函数用于打印字符串,类似于Java中的System.out.println(),Oracle中的dbms_output.put_line(). 用法如下: raise notice 'My name is %, I am a %.', 'Lewis', 'coder'; 以上sql会在控制台输出My name is Lewis, I am a coder..如果是在DBeaver里使用该函数,则会在output的tab里输出字符串. raise后面的n

  • PostgreSQL 字符串处理与日期处理操作

    字符串长度.大小写 SELECT CHAR_LENGTH('test') -- 字符串长度 SELECT LENGTH('test') LENGTH(string,encoding name) SELECT LENGTH('测试','UTF-8'); LOWER(string) 或者 UPPER(string) -- 大小写 ASCII(string) SELECT ASCII('abc') -- 结果是'a'的ascii码 字符串格式化 FORMAT(formatstr text [,form

  • Postgresql 截取字符串的案例

    截取字符串一般用 substring 就够用了.对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割. 如:(这是一个url,截取最后一部分.现在要取 - 后面部分内容) 8a59e88177ad5e70-20170317120301AB9E.plist 12b8d5c26d83a17f-20170308173008D5DD.plist 这时需要 split_part 函数,如: -- url 一共3个 - ,字符串被分成4部分,取最后一部分,那最后一个参数就是4 select

  • postgresql 查询集合结果用逗号分隔返回字符串处理的操作

    关键字: string_agg('' , '') 例如: select string_agg(name||'' , ',') from sys_user 补充:PostgreSQL 字段用逗号 ","隔开 判断是否含有某个值 Array Functions and Operators https://www.postgresql.org/docs/9.2/functions-array.html -- ---------------------------- -- Table stru

  • iOS开发支付宝支付成功返回字符串的处理操作

    { memo=""; result="partner=\"311811\"&seller_id=\"nse@gmail.com\"&out_trade_no=\"S005372\"&subject=\"\U522b\U5885\U8ba2\U5355\"&body=\"\U5885\"&total_fee=\"0.1\"

  • Mybatis传参为逗号分隔的字符串情形进行in条件查询方式

    目录 传参为逗号分隔的字符串情形进行in条件查询 后端只需要做如下调整 根据逗号分隔的id查询 传参为逗号分隔的字符串情形进行in条件查询 在业务变更需支持多条件查询,在改动最小的情况下,实现方式就是只改mapper.xml,这时,可让前端逗号分隔传参 后端只需要做如下调整 <if test="paramXXX!= null and paramXXX!= ''">   and t.paramXXX in     <foreach item="item&quo

  • sql查询结果列拼接成逗号分隔的字符串方法

    背景:做SQL查询时会经常需要,把查询的结果拼接成一个字符串. 解决方法: 通过group_concat函数 拼接的结果很长,导致拼接结果显示不全,可以通过以下方法解决. 在每次查询前执行SET SESSION group_concat_max_len = 10240; 或者SET GLOBALgroup_concat_max_len = 10240; 使得查询结果值变大. 补充:SQL server 的 拼接SQL如下: selectstuff(( select ','+ requestid

  • Mybatis查询多条记录并返回List集合的方法

    实体对象如下: /** 使用lobmok插件 */ @Getter @Setter @NoArgsConstructor @ToString @EqualsAndHashCode public class Vendor { private String vend_id; private String vend_name; private String vend_address; private String vend_city; private String vend_state; privat

  • mybatis接收以逗号分隔的字符串批量查询方式

    目录 接收以逗号分隔的字符串批量查询 如何相互转换逗号分隔的字符串和List 将逗号分隔的字符串转换为List 将List转换为逗号分隔符 接收以逗号分隔的字符串批量查询 <IF test = " supplierIds !=null and supplierIds.indexOf(',') != -1  ">      AND msd.supplier_id NOT IN      <foreach collection = "supplierIds.sp

  • SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题

    目录 字段是逗号分隔开的数组如何查询匹配数据 方式一:CHARINDEX***()***** 方式二:WHERE LIKE Mysql逗号分隔的字段查询 1.like 2.find_in_set 3.regexp 总结 字段是逗号分隔开的数组如何查询匹配数据 方式一:CHARINDEX***()***** SELECT     *  FROM     U_PUR1  WHERE     CHARINDEX( ',' + '100306' + ',', ',' + DeptCode + ',' )

  • django自定义Field实现一个字段存储以逗号分隔的字符串

    实现了在一个字段存储以逗号分隔的字符串,返回一个相应的列表 复制代码 代码如下: from django import formsfrom django.db import modelsfrom django.utils.text import capfirstfrom django.core import exceptions class MultiSelectFormField(forms.MultipleChoiceField):    widget = forms.CheckboxSel

  • 判断以逗号分隔的字符串中是否包含某个数的实例

    1.首先将字符串变成字符串数组 2.将字符串数组转为List集合 3.利用List集合中的contains()方法,判断是否包含某个数 @Test public void test2222(){ String ids = "1,2,3,45,35"; String[] values = ids.split(","); List<String> list = Arrays.asList(values); if(list.contains("4&q

随机推荐