postgresql中表中含有一个由多个name按逗号分隔的字段值。我要根据一个条件name去查询这条数据
时间: 2023-05-20 14:01:45 浏览: 229
您可以使用 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` 条件来查询所有可能的情况。
相关问题
postgresql更加逗号拼接的ids,获取name并且按逗号拼接
可以使用以下 SQL 语句实现:
SELECT string_agg(name, ',') FROM table_name WHERE id IN (id1, id2, id3, ...);
其中,table_name 是表名,id 是需要拼接的 id 值,name 是需要获取的字段名。string_agg 函数可以将多个字符串按照指定的分隔符拼接成一个字符串。
postgresql 分组合并字段
在 PostgreSQL 中,可以使用 `string_agg` 函数将一个表中某一列的多个值合并成一个字符串,例如:
```
SELECT department, string_agg(name, ', ') as employees
FROM employee
GROUP BY department;
```
这条语句将按照 department 列进行分组,将每个分组中的 name 列的值合并成一个以逗号和空格分隔的字符串,并将结果命名为 employees。
如果要按照多个列进行分组,可以将多个列用逗号分隔:
```
SELECT department, title, string_agg(name, ', ') as employees
FROM employee
GROUP BY department, title;
```
这条语句将按照 department 和 title 列进行分组,并将每个分组中的 name 列的值合并成一个以逗号和空格分隔的字符串。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)