我需要使用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 []放在后面并为其创建一个表并加入该表将解决它,这不是因为它会降低性能。
有什么想法吗?
答案 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;