通过文本数组中的任何值来挑战在文本数组中搜索Postgres sql

特里尼

所以这是我的一个使查询正常工作的问题,要进行查询非常困难,我正在使用unnest,使用进行搜索@>,但没有任何效果。

我在db中有一个具有text[]字段的表,并且正在传递text[]字段以使它的任何值都应返回该行,或者,如果我不传递该值,则应返回所有它们。例如:

表:

id (int)
names (text[])

db中的数据:

id   names
---------------------------------
1    { alex }
2    { tom, john }
3    { tom, alex }
4    { rocky, simon, leon, john }

应该如何工作?

  • 当我通过{simon}它应该只返回行4
  • 当我通过{alex}它应该返回行13
  • 当我通过{tom,leon}它应该返回行23并且4
  • 当我传递null时,它应该返回行 1,2,3,4
  • in与row中的任何值匹配的任何参数,应返回row
CREATE OR REPLACE FUNCTION public.get_names
(
    _names TEXT[]
)
RETURNS JSONB
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
    RETURN (SELECT
        json_agg(t)
    FROM
        (
            SELECT
                n.id,
                n.names
            FROM
                public.names n
            WHERE
               _names IS NULL 
               OR exists (select unnest(cast(_names as text[]))) = ANY (n.names)
        ) t);
END;
$BODY$;

我的任何查询都没有成功,但出现以下错误:

  • 运算符不存在:boolean =可变字符
  • ANY / ALL(数组)不支持设置参数
  • 子查询返回的多于一行用作表达式
  • 和更多..

如您所见,我确实在尝试使其正常运行,但是对我而言,这非常困难,我需要您的一些帮助。

a_horse_with_no_name

重叠操作&&会做你想要什么

select *
from test
where names && array['tom', 'leon']

上面的代码将从names右侧返回所有至少包含一个元素的

要处理NULL参数,可以NULL在函数中使用check

CREATE OR REPLACE FUNCTION public.get_names (_names TEXT[] default null )
  RETURNS JSONB
LANGUAGE sql
AS 
$BODY$
  SELECT jsonb_agg(t)
  FROM (
    SELECT n.id, n.names
    FROM public.test n
    WHERE _names is null 
      OR n.names && _names 
  ) t;
$BODY$;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有文本数组的 sql IN 运算符

来自分类Dev

Java中的文本数组

来自分类Dev

postgres-聚合文本数组中的项目

来自分类Dev

检查文本数组中的项目

来自分类Dev

输入类型文本数据未插入到 sql 数据库中

来自分类Dev

Postgres:如何将文本数组列中的元素复制到 json 列中?

来自分类Dev

如何在文本数组中强制使用空格?

来自分类Dev

如何在react中显示文本数组?

来自分类Dev

PostgreSQL - 从文本数组中获取所有子组

来自分类Dev

Knex迁移中针对特定类型的文本数组的默认值不起作用

来自分类Dev

SQL查询-大于文本数据类型

来自分类Dev

T-SQL 如何对文本数据求和?

来自分类Dev

SQL在表的所有列中搜索文本值

来自分类Dev

从NodeJS Knex插入Postgres多维文本数组

来自分类Dev

Solr文本索引为文本数组

来自分类Dev

删除子文本数组之前的文本

来自分类Dev

SQL从值中获取文本

来自分类Dev

如何在C#应用程序的嵌入式SQL Server CE数据库中存储长文本数据?

来自分类Dev

jQuery或Javascript在带有文本数组的DIV中旋转文本

来自分类Dev

Postgres SQL数组根据条件汇总单个表中的值

来自分类Dev

Ruby中的Sql值数组

来自分类Dev

创建返回文本数组的函数

来自分类Dev

快速将文本数据读入数组

来自分类Dev

使用wget和文本数组的用法

来自分类Dev

Python用Numpy导入文本数组

来自分类Dev

有什么类型的纯文本数组?

来自分类Dev

jQuery 获取 0 级文本数组

来自分类Dev

如何在Python中替换文本数组中的单词?

来自分类Dev

不使用扫描仪将文本数据存储到Java数组中