奇怪的行为,链接数据库的结果

Strange behaviour, results from linked DB

运行 Toad 上的此查询

select * from customer@linkedDb 
where "CustomerNumber"=1

获取单行结果,然而

select * from customer@linkedDb 
where "CustomerNumber"=(select 1 from dual)

仍然是 returns 一行,但几乎每一列都是 NULL 任何数据转换函数或到其他表的链接都会导致同样的效果。有什么想法吗?

在 SQL+ 上尝试这个,我得到这个:

select "Forename" from customer@linkedDb where "CustomerNumber"=1

结果:艾米

select "Forename" from customer@linkedDb where "CustomerNumber"=(select 1 from dual)

结果:A m y

我确定这一定是某种字符编码的东西,但我很困惑。

问题是从 nvarchar 转换为 varchar...

Select 
 Cast("Forename" As Varchar(50))
From
 customer@linkedDb
Where
 "CustomerNumber"=(select 1 from dual)

不起作用,因为 (select 1 from dual) 似乎导致数据被自动转换。有效的是在转换后对值的任何改变——我认为可能会促使 Oracle 改变事物的顺序

Select 
 Substr(Cast("Forename" As Varchar(50)),1,50)
From
 customer@linkedDb
Where
 "CustomerNumber"=(select 1 from dual)

这行得通。这是一个丑陋的 - 稍微昂贵的解决方案,所以我有一些解决方法 - 但我想我会 post 如果其他人遇到同样的问题,我会把它作为思考的食物。