更新PostgreSQL中的单元格值

时间:2011-08-03 18:23:33

标签: postgresql

当我运行命令时:

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 个答案:

答案 0 :(得分:2)

你有战斗报价。您正在使用shell命令的单引号:

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

还用于引用SQL中的字符串:

... version_id='1.2' ...

尝试对shell部分使用双引号:

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

答案 1 :(得分:0)

将列更改为某种类型的字符数据类型。