奇怪的行为,链接数据库的结果
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 如果其他人遇到同样的问题,我会把它作为思考的食物。
运行 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 如果其他人遇到同样的问题,我会把它作为思考的食物。