postgresql中表中含有一个由多个name按逗号分隔的字段值。我要根据一个条件name去查询这条数据
时间: 2023-05-20 22:01:45 浏览: 380
您可以使用 PostgreSQL 内置的字符串函数 split_part
来实现这个功能。例如,假设您的表名为 mytable
,字段名为 names
,要查询的条件为 John
,则可以使用以下 SQL 语句:
SELECT * FROM mytable WHERE split_part(names, ',', 1) = 'John' OR split_part(names, ',', 2) = 'John' OR split_part(names, ',', 3) = 'John' OR split_part(names, ',', 4) = 'John' OR split_part(names, ',', 5) = 'John';
其中,split_part(names, ',', n)
表示将字段 names
按照逗号分隔后,取第 n
个子串。由于您的字段值可能包含多个 name,因此需要使用多个 OR
条件来查询所有可能的情况。
相关问题
sql查询某个字段的值在不在查询字符串之内,在的话展示,如果有多个,那就逗号分隔组成新的字符串
在SQL查询中,如果你想要检查某个字段的值是否包含在另一个字符串内,并将匹配的结果用逗号分隔组合成一个新的字符串,你可以使用CASE
语句、INSTR
函数(针对Oracle)或者FIND_IN_SET
函数(在MySQL中)。这里是一个基本的示例:
SELECT
CASE
WHEN field_name IN ('string1', 'string2', 'string3') THEN GROUP_CONCAT(field_name SEPARATOR ',')
ELSE 'Value not found'
END AS combined_values
FROM
your_table
在这个例子中:
field_name
是你想检查的字段名,'string1', 'string2', 'string3'
是你要查找的字符串集合,GROUP_CONCAT()
或类似的功能(如STRING_AGG()
in PostgreSQL)用于将匹配的值连接成一个字符串,SEPARATOR ','
指定连接符,这里是逗号。
如果某个值在提供的字符串列表中存在,它会被包括在结果中;如果没有找到匹配项,combined_values
将显示"Value not found"。
postgresql更加逗号拼接的ids,获取name并且按逗号拼接
可以使用以下 SQL 语句实现:
SELECT string_agg(name, ',') FROM table_name WHERE id IN (id1, id2, id3, ...);
其中,table_name 是表名,id 是需要拼接的 id 值,name 是需要获取的字段名。string_agg 函数可以将多个字符串按照指定的分隔符拼接成一个字符串。
相关推荐













