2011-12-02 94 views
0
Declare @PackageID varchar(50) 
Declare @state varchar(50) 
set @PackageID='2,4,5' 
set @state='delhi,maha' 

    select DetailsID,Industry,StateID from DetailsMaster 
    where ((Industry IN (SELECT * from fnList2Table (@PackageID))) 
    or 
    ((StateID like '%' +(SELECT top 1 [s] from dbo.Split(',', @state)) + '%') 
    )) 


Union 

select DetailsID,Industry,StateID from DetailsMaster 
where ((Industry IN (SELECT * from fnList2Table (@PackageID))) 
or 
((StateID like '%' +(SELECT top 1 [s] from dbo.Split(',', Reverse(@state))) + '%') 
)) 

以上查询不是国家kk,maha的结果。它将获取maha,kk的结果。LIKE运营商问题'maha,delhi'

回答

3

看起来你的Reverse(@state)没有切换delhi,mahamaha,delhi

Reverse实际上做的是将delhi,maha转换为aham,ihled

你可以尝试自己切割字符串substr_index,然后用concat_ws重新组装以相反:

CONCAT_WS(',', SUBSTRING_INDEX(@state,',',-1), SUBSTRING_INDEX(@state,',',1)) 
+0

u能temme热做 –

+0

乐施会那么如何解决呢?任何建议 –

+0

那么解决方案是什么? –