gpt4 book ai didi

PostgreSQL:错误:运算符不存在:整数 = 字符变化

转载 作者:行者123 更新时间:2023-11-29 11:05:59 26 4
gpt4 key购买 nike

我在这里尝试创建如下示例所示的 View :

示例:

 create view view1
as
select table1.col1,table2.col1,table3.col3
from table1
inner join
table2
inner join
table3
on
table1.col4 = table2.col5
/* Here col4 of table1 is of "integer" type and col5 of table2 is of type "varchar" */
/* ERROR: operator does not exist: integer = character varying */
....;

注意:在 sql server 中执行相同的查询,但在 postgreSQL 中出现上述错误。

最佳答案

我认为它是在告诉你到底哪里出了问题。您不能将整数与 varchar 进行比较。 PostgreSQL 是严格的,不会为你做任何神奇的类型转换。我猜 SQLServer 会自动进行类型转换(这是一件坏事)。

如果您想比较这两种不同的野兽,您必须使用转换语法 :: 将一个转换为另一个。

沿着这些线的东西:

create view view1
as
select table1.col1,table2.col1,table3.col3
from table1
inner join
table2
inner join
table3
on
table1.col4::varchar = table2.col5
/* Here col4 of table1 is of "integer" type and col5 of table2 is of type "varchar" */
/* ERROR: operator does not exist: integer = character varying */
....;

注意 table1.col4 上的 varchar 类型转换。

另请注意,类型转换可能会使您在该列上的索引无法使用并且会降低性能,这是非常糟糕的。更好的解决方案是查看是否可以永久更改两种列类型中的一种以匹配另一种。从字面上改变您的数据库设计。

或者,您可以使用自定义的不可变 函数在转换的值上创建索引,该函数将值转换到列上。但这也可能被证明不是最理想的(但比现场直播要好)。

关于PostgreSQL:错误:运算符不存在:整数 = 字符变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23622993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com