Re: psql \set variables in crosstab queries?
От | Ron |
---|---|
Тема | Re: psql \set variables in crosstab queries? |
Дата | |
Msg-id | 7fa041bf-bca9-4a2b-f1cc-ebdcb7b76dd2@gmail.com обсуждение исходный текст |
Ответ на | Re: psql \set variables in crosstab queries? (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-general |
On 3/4/23 19:22, Tom Lane wrote: > Ron <ronljohnsonjr@gmail.com> writes: >> According to >> https://www.postgresql.org/docs/12/app-psql.html#APP-PSQL-VARIABLES and >> experience, variables don't interpolate inside of string literals: >> " >> Variable interpolation will not be performed within quoted SQL literals and >> identifiers. Therefore, a construction such as ':foo' doesn't work to >> produce a quoted literal from a variable's value. >> " >> But crosstab takes text strings as parameters. How then do you use \set >> variables in crosstab queries? > If you read a little further, you'll find out the syntax for converting > the value of a psql variable to a SQL string literal: > > regression=# \set foo BAR > regression=# select ':foo'; > ?column? > ---------- > :foo > (1 row) > > regression=# select :'foo'; > ?column? > ---------- > BAR > (1 row) > > What the server got in the last case was "select 'BAR';". postgres=# \set foo BAR postgres=# select :'foo'; ?column? ---------- BAR (1 row) postgres=# select $$ :foo $$; ?column? ---------- :foo (1 row) postgres=# select $$ :'foo' $$; ?column? ---------- :'foo' (1 row) -- Born in Arizona, moved to Babylonia.
В списке pgsql-general по дате отправления: