Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE

Поиск
Список
Период
Сортировка
От Christopher Browne
Тема Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE
Дата
Msg-id m3vfb139lu.fsf@knuth.knuth.cbbrowne.com
обсуждение исходный текст
Ответ на plpgsql.. SELECT INTO ... WHERE FIELD LIKE  ("Yudie" <yudie@axiontech.com>)
Список pgsql-sql
Oops! yudie@axiontech.com ("Yudie") was seen spray-painting on a wall:
> How in plpgsql use LIKE with a variable?
>
> let say I want to do this query:
>      SELECT INTO RS id FROM customer WHERE firstname LIKE keyword% LIMIT 1;
>
> keyword is a variable, in this case I want to find name like 'Jo%'
>
> CREATE OR REPLACE FUNCTION custlike(text) RETURNS INT4 AS'
>   DECLARE
>     keyword ALIAS FOR $1;
>     RS RECORD;
>   BEGIN
>     SELECT INTO RS id FROM customer WHERE firstname like keyword% LIMIT 1;
>     IF FOUND THEN
>       RETURN RS.id;
>     ELSE
>        RETURN NULL;
>     END IF;
>  END'
> LANGUAGE 'PLPGSQL';

Try:  SELECT INTO RS ID FROM CUSTOMER WHERE FIRSTNAME LIKE KEYWORD || ''%'' LIMIT 1;

You append KEYWORD and a '%' together using ||.  You need to use
doubled quotes inside the quoted environment; one gets stripped off so
that the stored procedure will wind up containing the query:
  SELECT INTO RS ID FROM CUSTOMER WHERE FIRSTNAME LIKE KEYWORD || '%' LIMIT 1;
-- 
let name="cbbrowne" and tld="gmail.com" in name ^ "@" ^ tld;;
http://linuxfinances.info/info/sgml.html
C is almost a real language. (see assembler) Even the name sounds like
it's gone through  an optimizing  compiler.  Get  rid of  all of those
stupid brackets and we'll talk. (see LISP)


В списке pgsql-sql по дате отправления:

Предыдущее
От: Christopher Browne
Дата:
Сообщение: Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE
Следующее
От: Josh Berkus
Дата:
Сообщение: Re: [NOVICE] FUNCTION, TRIGGER and best practices