обновить значение ячейки в PostgreSQL - PullRequest
0 голосов
/ 03 августа 2011

Когда я запускаю команду:

su -s /bin/bash -l postgres -c "psql -d host -c 'UPDATE version_table SET version_id='1.2' WHERE version_id=CAST ('1.1' AS character varying)'"

Это работало хорошо.

Но если я изменил version_id на "1.2.1" как:

su -s /bin/bash -l postgres -c "psql -d host -c 'UPDATE version_table SET version_id='1.2.1' WHERE version_id=CAST ('1.1' AS character varying)'"

Я получил следующие сообщения об ошибках:

ERROR:  syntax error at or near ".1"
LINE 1: ...M version_table WHERE version_id=CAST (1.2.1 AS char...

Кажется, не допускается более одной точки.

Как мне обойти это?

Спасибо!

Добавить: тип столбца может быть различным.

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

У вас есть боевые цитаты. Вы используете одинарные кавычки для команды оболочки:

psql -d host -c '...sql...'

А также для цитирования строк внутри SQL:

... version_id='1.2' ...

Попробуйте использовать двойные кавычки для части оболочки:

psql -d host -c "UPDATE version_table SET version_id='1.2.1'  WHERE version_id=CAST ('1.1' AS character varying)"

Или поместите SQL в отдельный текстовый файл и передайте его в psql через стандартный ввод

psql -d host < sql_in_a_text_file.sql
0 голосов
/ 03 августа 2011

изменить столбец на тип данных персонажа.

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