DatabaseA - TableA - FieldA VARCHAR2
DatabaseB - TableB - FieldB NUMBER
[ dblink created ]
SELECT *
FROM TableB@dblink b
INNER JOIN TableA a
ON b.FieldB = a.FieldA
有两种并发症
1. FieldA是VARCHAR2
但FieldB是NUMBER
2. FieldA包含-
,FieldB包含0
。
有关字段的更多信息
FieldA :VARCHAR2(15)
,NOT NULL
样本值
-
123个
没有非数字值,但 -
FieldB :NUMBER(5,0)
样本值
0
123个
没有非数字值
我想要做的是忽略行如果FieldA =' - '或FieldB = 0,否则将FieldA与FieldB进行比较。
SELECT *
FROM TableB@dblink b
JOIN TableA a
ON to_char(b.FieldB) = a.FieldA
我收到以下错误:
SQL Error: 17410, SQLState: 08000
No more data to read from socket.
答案 0 :(得分:1)
话虽如此,我是不依赖隐式数据类型转换的主要支持者。所以我会把我的查询写成
SELECT *
FROM TableB@dblink b
JOIN TableA a
ON to_char(b.FieldB) = a.FieldA
如果没有给出你想要的结果,也许在每个表中发布数据的例子以及你想要的结果会有所帮助。