【发布时间】:2017-01-17 14:06:45
【问题描述】:
数据库A - 表A - 字段A 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
没有非数字值,除了 -
字段B:NUMBER(5,0)
样本值
0
123
没有非数字值
如果 FieldA='-' OR 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.
【问题讨论】:
-
我不清楚你的 NULL 值意味着什么。
TO_NUMBER(NULL)返回NULL,那么需要以什么方式转换值与NULL 处理冲突?如果您提供示例输入、示例查询、实际结果和预期结果,也许会有所帮助... -
我想忽略 NULL 值,将它们从结果集中删除。
-
重复您在问题中所写的内容既不能回答我的具体问题,也不能提供所要求的一般说明。如果由于某种原因您不能或不会提供示例输入、您尝试过的查询、实际结果以及它们与预期的差异......那么您需要找到一种不同的方式来明确您的请求。如果您需要我的帮助,不是重复;但也许其他人是更好的读心者。
-
讽刺肯定有帮助。我非常愿意在这里提供意见,但是由于我的问题中包含了 2 个并发症,我无法提供意见。我无法克服这些错误,因为我不知道如何将 VARCHAR2 与 NUMBER 进行比较,同时还要考虑 NULL 值。
-
这是你从一开始就遇到的错误吗?这似乎与 JDBC 有关——它可能与 SQL 查询本身没有任何关系。您是否在网络上(或其他)对其进行了一些研究?如果尚未在 SO 上提出和回答类似问题,我会感到震惊。
标签: oracle inner-join varchar2 database-link