当前位置: 代码迷 >> Sql Server >> Sql语句左连接有关问题!(字符窜关联)
  详细解决方案

Sql语句左连接有关问题!(字符窜关联)

热度:35   发布时间:2016-04-27 11:59:47.0
Sql语句左连接问题!(字符窜关联)!高手进!
 
select * from AA inner join BB on (convert(varchar(2000),AA.Tid))=BB.TopTids


Tid 是一个int 类型(1001)


TopTIds是个字符窜组(1001、1002、1003)是用、拼接起来的! 


请问大家怎么改怎么能不会出现重复 或者可以关联! 

charindex(convert(varchar(2000), dbo.Finance_Refund.Tid),dbo.Sales_Order.TopTids,0) > 0 

用charindex函数可以关联 但是 这个关联的出现了3个重复数据 
 

------解决方案--------------------
SQL code
charindex('、'+convert(varchar(2000), dbo.Finance_Refund.Tid)+'、','、'+dbo.Sales_Order.TopTids+'、') > 0  --引号里的是你的分隔符
------解决方案--------------------
SQL code
select * from AA inner join BB on CHARINDEX('、' + RTRIM(AA.Tid) + '、','、' + BB.TopTids + '、') > 0
------解决方案--------------------
SQL code
--trySELECT  *FROM    Finance_RefundWHERE   EXISTS ( SELECT 1                 FROM   Sales_Orderwhere                 WHERE  CHARINDEX(',' + LTRIM(Finance_Refund.Tid) + ',', ',' + LTRIM(Sales_Order.TopTids) + ',') > 0 )
------解决方案--------------------
SQL code
--trySELECT  *FROM    Finance_RefundWHERE   EXISTS ( SELECT 1                 FROM   Sales_Orderwhere                 WHERE  CHARINDEX('、' + LTRIM(Finance_Refund.Tid) + '、', '、' + LTRIM(Sales_Order.TopTids) + '、') > 0 )
------解决方案--------------------
SQL code
  declare @AA table(id int,Tid int)insert into @AAselect 1,1001  declare @BB table(id int,TopTids varchar(20))insert into @BBselect 1,  '1001、1002、1003' union allselect 2,  '1002、1003' select * from @AA AA inner join @BB BB on CHARINDEX('、' + RTRIM(AA.Tid) + '、','、' + BB.TopTids + '、') > 0/*id    Tid    id    TopTids1    1001    1    1001、1002、1003*/
  相关解决方案