当我运行命令时:
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...
似乎不允许多个点。
我怎样才能绕过它?
感谢!
添加:列的类型是字符变化。
答案 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)
将列更改为某种类型的字符数据类型。