首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-07-31 
Sql语句左连接问题!(字符窜关联)!高手进!select * from AA inner joinBBon (convert(varchar(2000),AA.Tid

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*/ 

热点排行