2017-04-15 60 views
0

下面的查询返回40条记录(代表用户的名字被记录一次以上的号码):SQL波斯搜索

select 
    ownername, ownerfamily, count (*) cnt 
into 
    #p 
from 
    branchdataview 
where 
    trfcode in (1011, 1012, 1014) 
group by 
    ownername, ownerfamily 
having 
    count(*) > 1 

select * 
from #p 
where ownername like N'پروین' 
    and ownerfamily like N'افشار' --count=2 

select ownername, ownerfamily, trfcode, * 
from branchdataview with (nolock) 
where trfcode in (1011, 1012, 1014) 
    and ownername like N'پروین' 
    and ownerfamily like N'افشار' --count=3 

这两个查询必须返回相同的结果,但似乎پروین不پروین !

我有类似的问题,在#p

我该如何解决这个问题?

我最终的查询是:

select 
    branchcode, t.OwnerName, t.OwnerFamily 
from 
    branchdataview b with (nolock) 
right join 
    #p p on p.OwnerName =b.OwnerName and t.OwnerFamily = b.OwnerFamily 
where 
    b.TrfCode in (1011, 1012, 1014) 
order by 
    t.OwnerName, t.OwnerFamily 

但因为这个问题我提到它返回72行,而应该是至少返回80行。

+0

哪个RDBMS用于这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

+0

'但是看起来پروین不是پروین!'......你指的是同一个阿拉伯词两次。这是什么意思? –

+0

我测试了它,看起来这些值确实是相同的,所以也许问题出在别的地方。 –

回答

0

我犯了错误。我写了错误的查询。我的意思是下面的查询只返回一行 我使用SQL Server 2014

select ownername,ownerfamily,trfcode,* 
from branchdataview with (nolock) 
where trfcode in (1011,1012,1014) and 
ownername like N'رضا' and 
ownerfamily like N'کریمی' 

而低于回报2行的رضاکریمی

select ownername,ownerfamily,count (*) cnt 
from branchdataview 
group by ownername,ownerfamily 
having count(*)>1 

似乎一个“رضاکریمی”不能先确认查询。