基于postgres数据库的数字=字符变化:运算符不存在

时间:2019-03-21 16:41:42

标签: sql postgresql

我有这样的查询:

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是可变字符

1 个答案:

答案 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()