powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Приведение типов
5 сообщений из 5, страница 1 из 1
Приведение типов
    #35105209
last_elf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

В PL/pgSQL можно как-то конвертировать тип boolean в text? Если писать прямо так (param_var возвращает тип boolean) - ругается
Код: plaintext
(ret.param_var::text)

Хочется такую гибкую функцию написать, к-рая ищет во всех родителях каталога произвольное поле с указаным значением - если находит - возвращает TRUE иначе FALSE.

То есть передаю в ф-цию
-ид каталога
-имя поля
-значение к-рое ищем
и вот последнее - может быть разного типа

Проверка
Код: plaintext
1.
IF (ret.param_var::text)=search_value THEN
           RETURN true;
не работает =(

Код: plaintext
1.
2.
3.
4.
ERROR:  нельзя конвертировать тип boolean в text
LINE 1: SELECT  ( $1 ::text)= $2 
                      ^
QUERY:  SELECT  ( $1 ::text)= $2 
CONTEXT:  PL/pgSQL function "up_thread_param" line 22 at if

search_value - это и есть параметр крый передаем в ф-цию и он всегда типа text
...
Рейтинг: 0 / 0
Приведение типов
    #35105730
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE FUNCTION ToText (val bool) returns text as
$$
declare
begin
IF val THEN 
	return 'TRUE';
ELSE
	return 'FALSE';
END IF;
end
$$ language plpgsql;

CREATE OR REPLACE FUNCTION ToText (val text) returns text as
$$
declare
begin
return val;
end
$$ language plpgsql;

А в запросе писать:

Код: plaintext
1.
2.
IF ToText(ret.param_var)=search_value THEN
           RETURN true;

А постгри уже сам разберется, какую функцию вызывать, в зависимости от входного параметра
...
Рейтинг: 0 / 0
Приведение типов
    #35105891
last_elf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Теперь осталось только дописать подобные ф-ции для приведения из других типов, например int. Сейчас это не надо, но может понадобится в будущем...

А вообще мне кажется, что это недороботка постгреса, зачем перекладывать задачу приведения типов на программера, если тут и так все ясно. Или я слишком привык к сиподобным языкам и чего-то недопонял.
...
Рейтинг: 0 / 0
Приведение типов
    #35105904
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно упростить задачу, посмотрите в сторону
CREATE CAST
...
Рейтинг: 0 / 0
Приведение типов
    #35106002
last_elf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел. Круто, можно перегрузить оператор приведения типов или даже сделать так, чтобы преобразование происходило автоматически когда подставлеям наше выражение в какой-либо контекст (наприемр в туже провекру на равенство)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Приведение типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]