整数的输入语法无效:" 9Na_(2)SO_(4)"

时间:2015-02-17 16:47:07

标签: postgresql insert

我正在尝试在表格中插入字母数字值:

INSERT INTO solution (solution, nextsolution) VALUES
    ('9Na_(2)SO_(4)', NULL), ('2Ni(OH)_(3)', (SELECT id FROM solution WHERE solution='9Na_(2)SO_(4)' & nextsolution=null));

解决方案是text类型,nextsolution是整数。不幸的是postgresql不允许我做WHERE子句。它给了我错误:

ERROR:  invalid input syntax for integer: "9Na_(2)SO_(4)"
LINE 9: ...OH)_(3)', (SELECT id FROM solution WHERE solution='9Na_(2)SO...

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

问题是where子句中的语句:'9Na_(2)SO_(4)' & nextsolution=null尝试对字符串执行bitwise and&)操作,这不起作用(可能不是'无论如何你想要什么。)

查看您的查询我认为您想要的是首先插入值'9Na_(2)SO_(4)',然后使用前一个插入行的ID插入值'2Ni(OH)_(3)'

您需要将此作为两个语句执行,并使用不同的语法。这应该做你想要的:

INSERT INTO solution (solution, nextsolution) VALUES (
  '9Na_(2)SO_(4)', 
  NULL
);

INSERT INTO solution (solution, nextsolution) VALUES (
  '2Ni(OH)_(3)', 
  (SELECT id FROM solution WHERE solution='9Na_(2)SO_(4)' and nextsolution is null)
);

答案 1 :(得分:0)

您需要使用AND代替&加入WHERE子句 - &符号(&)用于按位操作。