sql join 子句未返回阿拉伯文本的预期结果

sql join clause is not returning expected results with arabic text

我真的一直在努力解决这个问题,我有两个结构相同的表如下:

registerationNumber int,CompanyName nvarchar,areaName nvarchar,phoneNumber int,email nvarchar,projectStatus nvarchar

除电子邮件列外,所有数据类型为 nvarchar 的列都包含阿拉伯文本, tableA 包含 675 行和 tableB 包含 397 行都存在于 tableA 我想要做的是 select 来自 tableA 的非匹配行, 它们应该是 675 - 398 = 277 行

每次我 运行 where 子句都会返回所有表

我写的join子句是这样的:

select a.registerationNumber
from tableA a left outer join tableB b
on a.registerationNumber = b.registerationNumber

但我没有得到任何结果,我尝试了所有类型的连接,但我得到了相同的结果。

我创建了一个示例数据库并在表中插入了英语数据,它在以下子句中运行良好:

select * from tblAllProjects a right join tblhalfProjects h 
on a.registerationNumber = h.registerationNumber

这意味着我写的是正确的语法, 我知道我应该在 selecting 阿拉伯语文本上使用以下语法:

Select * from tableA where comanyName like N'arabic_text'

有人知道问题出在哪里吗?

我的意思是说你应该这样做:

select a.registerationNumber
from tableA a left outer join tableB b
on a.registerationNumber = b.registerationNumber
where b.registrationNumber is NULL

这应该select tableA 中的所有 registrationNumbers,在 tableB 中没有匹配项。

另一种写法(但可能更慢)是:

select a.registerationNumber
from tableA a 
where a.registerationNumber not in (
   select b.registerationNumber
   from tableB )

如果子查询只返回“几个”条记录,你should/can使用第二种方法。