SELECT     
*
FROM  T_Right WHERE   
R_ID in( SELECT M_Right  FROM T_Module WHERE M_ID = 1
)提示我:
消息 245,级别 16,状态 1,第 1 行
在将 varchar 值 '1,2,3,4' 转换成数据类型 int 时失败。
请问我如何将IN部分的语句转换呢?

解决方案 »

  1.   


    SELECT    

    FROM T_Right WHERE  
    R_ID in( SELECT CAST(M_Right AS INT) FROM T_Module WHERE M_ID = 1 
      

  2.   

    SELECT   
    *
    FROMT_RightWHERE 
    charindex(','+rtrim(R_ID)+',', ','+(SELECT M_Right FROM T_Module WHERE M_ID = 1)+',')>0
      

  3.   

    SELECT    

    FROM T_Right WHERE  
    cast(R_ID as varchar) in( SELECT  M_Right   FROM T_Module WHERE M_ID = 1 
    ) 这样应该也可以。
      

  4.   


    SELECT    

    FROM T_Right WHERE  
    CHARINDEX(R_ID, ( SELECT M_Right FROM T_Module WHERE M_ID = 1 ))>0
      

  5.   

    SELECT * FROM T_Right WHERE cast(R_ID as varchar) in(SELECT M_Right FROM T_Module WHERE M_ID=1) 
      

  6.   

    SELECT    

    FROM T_Right WHERE  
    R_ID in( SELECT M_Right FROM T_Module WHERE M_ID = 1 

    楼主的执行提示 是因为 M_right是字符串,而R_ID是INT.
     这个要知道你的表结构。