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

表连接处理字符串有关问题

2013-09-12 
表连接处理字符串问题如题:现在有一张表zone,要连接的是两张表,left join但有条件,根据条件不同只能连接一

表连接处理字符串问题
如题:

现在有一张表zone,要连接的是两张表,left join

但有条件,根据条件不同只能连接一张表,但要写成一条sql



SELECT *
FROM dbo.[zone] z LEFT OUTER JOIN
      dbo.property_info pi ON LEFT(z.spare2, 1) = 'P' AND CONVERT(int, 
      REPLACE(z.spare2, 'P', '')) = pi.ID LEFT OUTER JOIN
      community_info ci ON LEFT(z.spare2, 1) = 'C' AND CONVERT(int, REPLACE(z.spare2, 
      'C', '')) = ci.id LEFT OUTER JOIN



zone的spare2字段存的内容 字符串类型,如P456,C567等

意思是P的时候连接一个表,C的时候连接一个表,不能同时连接

小弟调试了半天,差了半天,总是报将varchar2 P456转int出错


望sql大牛指点小弟一二

[解决办法]
写两条sql再union起来
[解决办法]
存储过程分步实现吧,非要写无比复杂语句与自己过不去?

[解决办法]
SELECT *
FROM dbo.[zone] z LEFT OUTER JOIN
      dbo.property_info pi CONVERT(int, 
      REPLACE(z.spare2, 'P', '')) = pi.ID 
where  LEFT(z.spare2, 1) = 'P' union 
SELECT *
FROM dbo.[zone] z LEFT OUTER JOIN
      community_info ci ON LEFT(z.spare2, 1) = 'C' AND CONVERT(int, REPLACE(z.spare2, 'C', '')) = ci.id 
where LEFT(z.spare2, 1) = 'C'  

热点排行