Sql 在oracle中验证两个不同数据库(从源到目标)中的相同表时,如何在列中查找垃圾值或不匹配值

Sql 在oracle中验证两个不同数据库(从源到目标)中的相同表时,如何在列中查找垃圾值或不匹配值,sql,oracle,Sql,Oracle,例如,我有两个表,源中的student和目标中的student1。 学生和学生1的sname、m、p、c列作为学生姓名,m、p、c列作为科目标记。我需要找出列名称和“&*”所在的值 学生 和 学生1 输出应该类似于您可以尝试使用自然联接来联接两个列名称相同的表。使用自然联接的查询将获得所有匹配的记录。然后,您可以从student1表中的查询返回记录中减去这些结果,您将得到被自然连接含义遗漏的记录,这些记录具有垃圾值: CREATE TABLE student ( sname VARCHAR2

例如,我有两个表,源中的student和目标中的student1。 学生和学生1的sname、m、p、c列作为学生姓名,m、p、c列作为科目标记。我需要找出列名称和“&*”所在的值

学生 和 学生1

输出应该类似于

您可以尝试使用自然联接来联接两个列名称相同的表。使用自然联接的查询将获得所有匹配的记录。然后,您可以从student1表中的查询返回记录中减去这些结果,您将得到被自然连接含义遗漏的记录,这些记录具有垃圾值:

CREATE TABLE student (
  sname VARCHAR2(20),
  m VARCHAR2(20),
  p VARCHAR2(20),
  c VARCHAR2(20)
);

CREATE TABLE student1 (
  sname VARCHAR2(20),
  m VARCHAR2(20),
  p VARCHAR2(20),
  c VARCHAR2(20)
);

INSERT INTO student VALUES ('rama', '50', '60', '70');
INSERT INTO student VALUES ('laxman', '70', '50', '60');
INSERT INTO student VALUES ('sita', '60', '70', '50');
INSERT INTO student VALUES ('kalpu', '40', '80', '70');
INSERT INTO student VALUES ('some student', '*', '80', '70');

INSERT INTO student1 VALUES ('rama', '50', '60', '70');
INSERT INTO student1 VALUES ('laxman', '70', '&*', '60');
INSERT INTO student1 VALUES ('sita', '60', '70', '50');
INSERT INTO student1 VALUES ('kalpu', '40', '80', '70');
INSERT INTO student1 VALUES ('some student', '40', '80', '70');

COMMIT;

SELECT
    *
  FROM student1

MINUS

SELECT
    *
  FROM student s
    NATURAL JOIN student1 s1
;
输出:

SNAME M P C -------------------- -------------------- -------------------- -------------------- laxman 70 &* 60
您可以对所有列进行完全外部联接,并在其中添加where子句,以检查具有空值的列

例如:

从列表中选择* 完全外接 A.col1=B.col1和A.col2=B.col2上的B。。。
如果A.col1为NULL或B.col1为NULL或A.col2为NULL或B.col2为NULL….

但如果我有1000列,如何具体知道垃圾在哪里?@KalpataruMAhanta您必须使用DBMS_SQL循环遍历我提出的查询返回的所有记录和所有列,并检查每个列是否具有不是数字。顺便问一下,如何定义垃圾值?这不是一个数字吗?或者有其他价值观你会认为是垃圾?或者垃圾值是任何数值,即使是数字值,也与学生表中的相应列不同?我们是否可以在过滤不匹配的行后,通过连接show student1.column\u name when student.column\u name student1.column\u name或任何其他方式将每个列源与目标进行比较?所谓垃圾,是指任何非数字?或者,对于给定的sname,您是指目标中与源不同的任何值(甚至是数字)?