Postgres文字[]通配符搜索

时间:2018-11-07 16:47:33

标签: sql postgresql jpa full-text-search

我需要使用JPA条件构建器构建此查询。

SELECT *
FROM row
WHERE value = ANY (String[])

这可能吗?

我试图制作一个自定义函数,例如:

CREATE OR REPLACE FUNCTION search_in(col_name text[], search_value 
VARCHAR)
RETURNS BOOLEAN AS $sql$
DECLARE
   sql_part TEXT;
BEGIN
sql_part = concat('(',search_value,' ANY (' , col_name , ')) ');


RETURN sql_part;
END;
$sql$
LANGUAGE plpgsql;

search_in(myCol,Bob)将返回“ bob” = ANY(myCol)。 这是在ArrayType中搜索的postgresql语法

但是这不起作用,因为它返回在查询中注入的字符串,并且将不执行/求值?有没有办法做到这一点?

将String []放在后面并为其创建一个表并加入该表将解决它,这不是因为它会降低性能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

找到了一种解决方案,但速度并不很快,仍然在寻找更好的解决方案!

CREATE OR REPLACE FUNCTION search_in(values text[], search_value VARCHAR, )
RETURNS boolean as $sql$
DECLARE
  bit_val boolean;
BEGIN
  SELECT CASE WHEN EXISTS
(select *
from context_data
where
      search_value = ANY(values))
    THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT) into bit_val END;


  RETURN bit_val;
END;
$sql$
LANGUAGE plpgsql;