我有两个表:gal和TCPD_personel_COPY。我想在TCPD_PERSONEL_COPY中插入那些在gal中但尚未存在于TCPD_PERSONEL_COPY白色条件gal.country='Germany'
中的用户。但我也有条件:
(gal.name not like '07_%'
gal.name not like 'TR_%'
gal.name not like 'ST_%'
gal.name not like 'KB_%'
gal.name not like 'HS_%'
gal.name is not null)
在这种情况下,我没有指定国家。
我尝试使用下一个代码,但它不能正常工作:
如何才能使此代码正常工作?
答案 0 :(得分:1)
您需要使用and
,而不是or
。
您正在查找所有数据,但不包含不以给定词组开头的项目除外。所以你想要的名字不是以07_
开头,也不是TR_
,也不是ST_
......但是你正在使用not like
,所以您需要问的是"名称不以07_开头,并且它不以TR_开头,并且它不以ST_,...开始#"。
使用or
代替and
意味着您始终可以获得所有内容,因为如果某些内容以07_
开头,则它也不能以TR_
开头,这根本不可能 - 你选择了至少有一个条件适合的所有 - 因为条件是"相互包容",true
是唯一可能的结果。
答案 1 :(得分:1)
更改此部分:
where (gal.name not like '07_%' or
gal.name not like 'TR_%' or
gal.name not like 'ST_%' or
gal.name not like 'KB_%' or
gal.name not like 'HS_%' or
gal.name is not null)
这些应该是AND而不是OR。
如果名称不为空,那么它的价值是什么才能被选中,因为OR意味着任何一个条件都会被满足,因为它是真实的。