我有这样的查询:
Select office_name, ofc_code
from table1
where ofc_code in (select ofc_institution from table2 where id ='2')
如果我运行此程序,则会出现错误:
Operator does not exist:numeric = character varying
Hint : no operator matches the given name and argument types
在上面的查询中:ofc_code
是数字,而ofc_institution
是可变字符
答案 0 :(得分:1)
不要将苹果与桔子相提并论。 '2'
是一个字符串值,2
是一个数字。
如果您确定ofc_institution
仅包含数字,则还需要将varchar
转换为数字(然后的问题是:到底为什么在Select office_name, ofc_code
from table1
where ofc_code in (select ofc_institution::numeric
from table2
where id = 2);
列中存储数字?):< / p>
ofc_institution
如果不能确定ofc_code
始终是数字,则将Select office_name, ofc_code
from table1
where ofc_code::varchar in (select ofc_institution
from table2
where id = 2);
强制转换为字符串-但这引出了一个问题,为什么要比较这些列以开头: / p>
con = psycopg2.connect(...)
cur = con.cursor()
for (x,y,z), value in numpy.ndenumerate(array):
cur.execute("INSERT INTO result(X, Y, Z, VALUE)
VALUES(%s,%s,%s,%s)", (x, y, z, value,))
con.commit()