Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 要显示表中不匹配的记录吗_Sql_Oracle_Oracle11g_Oracle10g - Fatal编程技术网

Sql 要显示表中不匹配的记录吗

Sql 要显示表中不匹配的记录吗,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,我有如下记录 Table1 id | 123 456 345 789 Table2 name| 123.abc 345.jkl 现在我只想显示id,即456789 请需要帮助也许是这样的。匹配在WHERE子句中NOT EXISTS条件的子查询中完成。当name是id,后跟一个句点,后跟至少一个以上的字符时,编写它的前提是name与id匹配。如果句点不是强制性的,或者是强制性的,但可能是名称的最后一个字符,则可以轻松修改查询以满足该要求 with table1 ( id ) as (

我有如下记录

Table1
id |  123 456 345 789

Table2
name| 123.abc 345.jkl 
现在我只想显示id,即456789


请需要帮助

也许是这样的。匹配在WHERE子句中NOT EXISTS条件的子查询中完成。当name是id,后跟一个句点,后跟至少一个以上的字符时,编写它的前提是name与id匹配。如果句点不是强制性的,或者是强制性的,但可能是名称的最后一个字符,则可以轻松修改查询以满足该要求

with
  table1 ( id ) as (
    select '123' from dual union all
    select '456' from dual union all
    select '345' from dual union all
    select '789' from dual
  ),
  table2 ( name ) as (
    select '123.abc' from dual union all
    select '345.jkl' from dual
  )
-- End of simulated inputs (for testing only, not part of the solution).
-- SQL query begins BELOW THIS LINE. Use your actual table and column names.
select id
from   table1 t1
where  not exists ( 
                    select name
                    from   table2
                    where  name like t1.id || '._%'
       )
;

 ID
---
456
789
你可以用减号。如果id为VARCHAR2字段,则不需要在id上添加字符。SUBSTR、INSTR用于在第一个字符之前提取字符

SELECT TO_CHAR(id) ID
FROM   table1
MINUS
SELECT SUBSTR(NAME, 1, INSTR(NAME, '.') - 1) 
FROM   table2 ; 

你试过什么?这不是一个免费的编码服务。那么,您希望表1中的id在表2中没有匹配的名称吗?什么是匹配-一个包含点左侧id和点右侧任何内容的名称?需要点吗?因此,如果名称是123而不是123.abc,这仍然是匹配的吗?