From: | Adam Scott <adam(dot)c(dot)scott(at)gmail(dot)com> |
---|---|
To: | Ron <ronljohnsonjr(at)gmail(dot)com> |
Cc: | "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Directly embedding a psql SET variable inside another string? |
Date: | 2023-01-13 17:08:16 |
Message-ID: | CA+s62-OBC_VQihE5RMW6_rYyoiH_HCbb6pbPS=+1DwaYOd8Adw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Do you mean like this?
postgres=# \set v_embed %:v_ssn%
postgres=# \echo :v_embed
%345%
postgres=# SELECT * FROM employee WHERE ssn LIKE :'v_embed';
ssn | name
-----------+----------
123456789 | John Doe
(1 row)
On Fri, Jan 13, 2023 at 8:12 AM Ron <ronljohnsonjr(at)gmail(dot)com> wrote:
>
> Pg 12
>
> I need to pass a \set variable (in this example named v_ssn) into a LIKE
> string. A two-stage process (building v_like from v_ssn, and then using
> v_like in the LIKE string) works, and is fine when executing an sql script,
> but not so good is there any way to *directly* embed v_ssn in another
> string?
>
> test=# \set v_ssn 345
> test=# \echo :v_ssn
> 345
> test=# \set v_like %:v_ssn%
> test=# \echo :v_like
> %345%
>
> test=# SELECT * FROM employee WHERE ssn LIKE :'v_like';
> ssn | name | ssn_int
> -----------+----------+-----------
> 123456789 | John Doe | 123456789
> (1 row)
>
> As expected, this fails:
>
> postgres=# SELECT * FROM employee WHERE ssn LIKE :'%v_ssn%';
> ERROR: syntax error at or near ":"
> LINE 1: SELECT * FROM employee WHERE ssn LIKE :'%v_ssn%';
>
>
> --
> Born in Arizona, moved to Babylonia.
>
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2023-01-13 17:13:36 | Re: Directly embedding a psql SET variable inside another string? |
Previous Message | Ron | 2023-01-13 16:12:30 | Directly embedding a psql SET variable inside another string? |