我正在尝试在表格中插入字母数字值:
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...
我该如何解决这个问题?
答案 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
子句 - &符号(&
)用于按位操作。