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

时间:2015-03-09 12:24:37

标签: oracle toad dblink

在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

我确信这必须是一些字符编码的东西,但我很难过。

1 个答案:

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

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