преобразовать int в строку в postgresql?

#postgresql

Вопрос:

Я хочу преобразовать результат select statement в строку:

 SELECT count(*) from pg_largeobject
 

результатом этого запроса будет целое число, я хочу преобразовать его в строку.

Пример: результат 12451 я хочу, чтобы он был «12451», а его тип-строка .

я пробовал эти решения, но они не работают:

https://www.postgresql.org/docs/9.3/functions-formatting.html

1 — to_char()

 to_char(SELECT count(*) from pg_largeobject, '')
 

но для этого требуется во втором параметре значение, которое я еще не знаю

2 — приведение(ВЫБЕРИТЕ количество(*) из pg_largeobject) в виде текста; это дает мне :

Ошибка запроса: ОШИБКА: синтаксическая ошибка в или рядом с «приведением»

Комментарии:

1. SELECT count(*)::varchar from pg_largeobject , где ‘::varchar’ — это сокращение от CAST to varchar .

2. @AdrianKlaver привет, чувак , спасибо, но это не работает

3. Я не понимаю, почему бы и нет? Какую команду вы используете и какое сообщение об ошибке?

Ответ №1:

Вы можете использовать

 select count(*)::TEXT from pg_catalog.pg_am;
 count 
-------
 7
 

Комментарии:

1. привет, чувак , он по-прежнему рассматривает результат как int, а не строку .

2. Должно быть, так вы его анализируете. Вывод выравнивается по левому краю при использовании ::текст.

Ответ №2:

Вы должны иметь возможность отображать count(*) текст в виде текста с ::text синтаксисом:

 postgres=# create extension lo;
CREATE EXTENSION
postgres=# SELECT count(*) from pg_largeobject;
 count 
-------
     0
(1 row)

postgres=# SELECT pg_typeof(count(*)) from pg_largeobject;
 pg_typeof 
-----------
 bigint
(1 row)

postgres=# SELECT pg_typeof(count(*)::text) from pg_largeobject;
 pg_typeof 
-----------
 text
(1 row)

postgres=# select version();
                                                 version                                                  
----------------------------------------------------------------------------------------------------------
 PostgreSQL 11.11 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
 

Ответ №3:

 SELECT cast ( count(*)  as VARCHAR(10)) AS varchar_expression from pg_largeobject