2017-04-15 61 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 

似乎一個「رضاکریمی」不能先確認查詢。