Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE - Mailing list pgsql-sql

From Christopher Browne
Subject Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE
Date
Msg-id m3vfb139lu.fsf@knuth.knuth.cbbrowne.com
Whole thread Raw
In response to plpgsql.. SELECT INTO ... WHERE FIELD LIKE  ("Yudie" <yudie@axiontech.com>)
List 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 by date:

Previous
From: Christopher Browne
Date:
Subject: Re: plpgsql.. SELECT INTO ... WHERE FIELD LIKE
Next
From: Josh Berkus
Date:
Subject: Re: [NOVICE] FUNCTION, TRIGGER and best practices