Обновите логический столбец, используя представление 't' 'f' в PostgreSQL - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь динамически обновить некоторые столбцы, используя этот запрос в качестве примера:

UPDATE db.user_channel AS y 
set is_favourite = x.is_favourite 
FROM (VALUES ('5378f031-7c93-4557-9ea7-8a8f047c7caa', 't')) as x(id,is_favourite) 
where x.id = y.id::text

Столбец is_favourite имеет тип boolean, и хотя 't' и 'f' являются допустимыми логическими представлениями в PostgreSQL, я получаю жалобы на этот кастинг:

SQL Error [42804]: ERROR: column "is_favourite" is of type boolean but expression is of type text
Hint: You will need to rewrite or cast the expression.
Position: 48

Почему это так? Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2020

Я думаю, что вы хотите:

set is_favourite = ( x.is_favourite = 't' )

Существует разница между Postgres синтаксическим анализом 't' в операторе SQL и интерпретацией как "true" по сравнению с чтением значения из столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...