나는 정말로 나를 혼란스럽게하는 문제가있다. 저는 여러분 중 한 명이 제가 간과하고있는 바보 같은 실수를 지적하길 기대하지만 실제로는 보지 않고 있습니다.겉으로보기에는 일관성없는 쿼리 결과의 원인은 무엇입니까?
나는 프로덕션 프로세스가 1 년 동안 먹이를 먹는 테이블을 가지고 있으며 우리는 고객으로부터 우리가 데이터와 일치 시키려고하는 미친 테이블을 얻었습니다. 다음 쿼리에서 tableA
이 내 테이블이고 tableB
이 방금 가져온 테이블입니다.
기본적인 문제는 그것이 있어야 믿을 때
select *
from tableA
where convert(nvarchar(30),accountNum) not in (
select CisAC
from tableB
)
가 모든 레코드를 반환되지 않는 것입니다. 나는 accountNum이 tableB의 CisAC 필드와 일치하는 tableA의 레코드를 찾아야한다고 생각한다. 권리? CisAC는 nvarchar (30)이고 accountNum 필드는 bigint입니다.
select * from tableA where convert(nvarchar(30),accountNum) = '336906210032'
반환 하나 개의 레코드 만
select * from tableB where CisAC = '336906210032'
은하지 않습니다 : 나는 빈 반환 설정이 잘못 생각하는 이유
는 지적합니다.그래서 무엇을 제공합니까? (그리고 당신의 시간 동안 감사합니다!)
표 B에서 CisAC를 트리밍하여 공백 및 공백을 제거하는 방법은 어떻습니까? –
좋은 생각이지만 공백이 없습니다. 또한 len (CisAC)이 DataLength (CisAC)의 1/2과 다른 필드를 확인했습니다. – clweeks