在Toad上运行此查询
select * from customer@linkedDb
where "CustomerNumber"=1
获取单行结果,但是
select * from customer@linkedDb
where "CustomerNumber"=(select 1 from dual)
仍然返回一行,但几乎每列都是NULL 任何数据转换函数或指向其他表的链接都会产生同样的效果。有什么想法吗?
在SQL +上尝试这个,我明白了:
select "Forename" from customer@linkedDb where "CustomerNumber"=1
结果:艾米
select "Forename" from customer@linkedDb where "CustomerNumber"=(select 1 from dual)
结果:A m y
我确信这必须是一些字符编码的东西,但我很难过。
答案 0 :(得分:0)
问题是从nvarchar转换为varchar ...
Select
Cast("Forename" As Varchar(50))
From
customer@linkedDb
Where
"CustomerNumber"=(select 1 from dual)
不起作用,因为(从双选1)似乎导致数据是自动播放。什么工作是在投射后对值的任何改变 - 我认为可能促使Oracle改变事物的顺序
Select
Substr(Cast("Forename" As Varchar(50)),1,50)
From
customer@linkedDb
Where
"CustomerNumber"=(select 1 from dual)
这很有效。这是一个丑陋的 - 稍微昂贵的解决方案,所以我有一些解决方法 - 但我想如果其他人遇到同样的问题,我会发布这个作为思考的食物。