不像嵌套 SQL

NOT LIKE NESTED SQL

我有一个 table 包含 phone 数值,它也可以是通配符,如下面提到的 %

select phonenumber from table_2 ;

  1    5159199076
  2    210645%
  3    %0869067

我需要有关 SQL 查询的帮助,以排除 table_2

中存在的 phone 数字的所有值

所以 table_1 具有这些值

ID     Phonenumber
   101     9757895378
   201   **2106450789**
   301   **9190869067**
   401     8757895078

select table_1.phone_number
from table_1
where table_1.phone_number not in 
(
  select phonenumber from table_2
  where phonenumber = table_1.phonenumber) 

如果 table_2 中没有通配符,如 210645%%0869067

,此方法有效

我更新了 SQL

select table_1.phone_number
from table_1
where table_1.phone_number not like 
(
  select phonenumber from table_2
  )

这导致没有行被返回,我如何修改 SQL 以获得正确的结果,以便不包括通配符?数据库是 postgres.

谢谢

select table_1.phone_number
from table_1
where table_1.phone_number not in 
(
  select phonenumber from table_2) 

使用LIKE ANY与子选择中的所有元素进行比较:

SELECT table_1.phone_number
FROM table_1
WHERE NOT table_1.phone_number
          LIKE ANY (array(
                       SELECT table_2.phone_number
                       FROM table_2
                   ));