Как объединить переменные PSQL?

8

Как объединить две переменные psql (клиент PostgreSQL)? Я хочу создать абсолютный путь, объединяя переменную пути каталога и переменную имени файла.

Я пробовал это:

\set path '/tmp/'
\set file 'foo'
\echo :path:file

Но psql помещает пробел между путем и файлом и выводит:

/tmp/ foo
Даниэль Серодио
источник

Ответы:

8
\set path '/tmp/'
\set file 'foo'
\set pf :path:file \echo :pf
/tmp/foo

Почему это работает? Я цитирую руководство здесь :

\ set [name [value [...]]]

Устанавливает для имени внутренней переменной значение или, если задано более одного значения, объединение всех из них . [...]

Акцент мой.

Эрвин Брандштеттер
источник
1
Даже лучше, чем у меня
Дезсо
4

Попробуй это:

\set path /tmp/
\set file foo
\qecho :path:file \o | sed s/\ //
/tmp/foo

\qechoпишет в канал вывода запроса (в отличие от \echo, который пишет в стандартный вывод). \o |затем перенаправляет вывод в следующую команду.

Dezso
источник
0

Похоже, вы хотите либо || оператор или функция concat:

http://www.postgresql.org/docs/9.1/static/functions-string.html

Cargo23
источник
1
Как вы используете это с \echo?
Дезсо
Этот ответ относится к конкатенации в SQL, когда речь идет о psql(терминальном интерфейсе).
Эрвин Брандштеттер