Postgres текст [] поиск по шаблону - PullRequest
0 голосов
/ 07 ноября 2018

Мне нужно построить этот запрос с критериями JPABuilder.

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)'. Это синтаксис postgresql для поиска внутри ArrayType

Но это не работает, так как возвращает строку, введенную в запрос, и она не будет выполнена / оценена? Есть ли способ сделать это?

Если оставить String [] позади и создать для него таблицу и присоединиться к ней, это решит, если бы не производительность.

Есть идеи?

1 Ответ

0 голосов
/ 08 ноября 2018

Нашел решение, но оно не совсем быстрое, все еще в поисках лучшего!

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...