有两个表views和post
select * from post left join views on (post.id = views.viewsid)……
post中的字段id和views中的字段viewsid不同但相关联,viewsid的值是c-11-id(这里的id与前面的id相同)
假设c-11-固定不变。如何使"post.id=views.viewsid"成立。
本人菜鸟,查了一下午都没搞明白,至今仍在水深火热之中,请求高人、大侠、大神……解救!!!

解决方案 »

  1.   

    select * from post 
    left join views on (post.id = convert(int,replace(views.viewsid,'c-11-','')))
      

  2.   

    select * from post 
    left join views 
    on (c-11-post.id) = views.viewsid
    --或
    select * from post 
    left join views 
    on post.id = convert(int,replace(views.viewsid,'c-11-',''))
      

  3.   

    select * from post 
    left join views 
    on 'c-11-'+convert(varchar(10,post.id) = views.viewsid
    --或
    select * from post 
    left join views 
    on post.id = convert(int,replace(views.viewsid,'c-11-',''))
      

  4.   

    如果c-11-的长度是固定的话就可以用substring来做了
      

  5.   

    select * from post 
    left join views on (post.id = 
    convert(int,REVERSE(substring(REVERSE(@t),0, charindex('-',REVERSE(@t)))))
    )
      

  6.   


    --上面的@t 是错的,我自己测试用的
    select * from post 
    left join views on (post.id = 
        convert(int,REVERSE(substring(REVERSE(views.viewsid),0, charindex('-',REVERSE(views.viewsid)))))
    )
      

  7.   

    可以这样,
    select * from post 
    left join views 
    on post.id = reverse(substring(reverse(views.viewsid),1,charindex('-',reverse(views.viewsid))-1))
      

  8.   

    select * from post 
    left join views on (post.id = substring_index(views.viewsid,'-',2))
    试试这个,如果你的格式是这样的话,绝对没有问题。