2015-02-17 2 views
0

Я пытаюсь вставить буквенно-цифровое значение в таблице:неверный входной синтаксис для целого числа: «9Na_ (2) SO_ (4)»

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)); 

решения типа текста и 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

Какой тип решения и nextsolution? – SMA

ответ

0

Вопрос заключается в том, что оператор в предложении, где: '9Na_(2)SO_(4)' & nextsolution=null пытается сделать bitwise and (&) операцию на строку, и это не будет работать (и, вероятно, не то, что вы хотите в любом случае).

Глядя на ваш запрос Я думаю, что вы хотите сначала вставить значение '9Na_(2)SO_(4)', а затем значение '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) 
); 
0

Вы должны использовать AND вместо & присоединиться к WHERE пункта - амперсанд (&) используются для битовых операций.

Смежные вопросы