求SQL语句:查找出表一中的所有记录在表二中没有匹配的显示出来。_百度...
发布网友
发布时间:2024-10-07 04:08
我来回答
共4个回答
热心网友
时间:2024-11-17 16:11
select * from 表格一 A
where 1 = 1 and not exists
(select C.B from (
select REPLACE(REPLACE(编码B, '.', ''), ' ', '') as B from 表格二) C
where PATINDEX('%'+A.编码A+'%', C.B) > 0)
其中用到了REPLACE函数把一些不要的字符给去掉,PATINDEX是用来判断一个字符串中是否包含了另一个字符串,并返回一个INT类型的数据!!
希望对你有帮助!
热心网友
时间:2024-11-17 16:08
如果还有汉字应该直接查不出来,如果只有小数点和空格的话可以先将小数点和空格替换掉。
热心网友
时间:2024-11-17 16:09
select * from T1 where A not in
(select nvl(substr(REGEXP_SUBSTR(B,'[0-9]+')||REGEXP_SUBSTR(B,'[0-9]+',1,2)||
REGEXP_SUBSTR(B,'[0-9]+',1,3)||REGEXP_SUBSTR(B,'[0-9]+',1,4),1,length(A)),' ')
from T2);
该语句只允许编码B有4段数字。
例如:64.789a02是3段数字,中间.和a相隔;
64.789a02b01是4段数字,中间.、a和b相隔。
如果5段,则增加REGEXP_SUBSTR(B,'[0-9]+',1,5)
如果6段,则增加REGEXP_SUBSTR(B,'[0-9]+',1,6),一次类推。
热心网友
时间:2024-11-17 16:09
能把表里的数据整成这样服了你了,都是字符串转来转去的,给你些思路吧~~不过效率不会高的
select * from 表1 a where not exists(
select * from (
select replace(cast(编码B as nvarchar(20)),'.','') as 编码B from 表2
) x where cast(replace(x.编码B,cast(a.编码A as nvarchar(20)),'0') as int)=0
)