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使用第二种方法。
我真的一直在努力解决这个问题,我有两个结构相同的表如下:
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使用第二种方法。