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部分的语句转换呢?
*
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部分的语句转换呢?
SELECT
*
FROM T_Right WHERE
R_ID in( SELECT CAST(M_Right AS INT) FROM T_Module WHERE M_ID = 1
)
*
FROMT_RightWHERE
charindex(','+rtrim(R_ID)+',', ','+(SELECT M_Right FROM T_Module WHERE M_ID = 1)+',')>0
)
*
FROM T_Right WHERE
cast(R_ID as varchar) in( SELECT M_Right FROM T_Module WHERE M_ID = 1
) 这样应该也可以。
SELECT
*
FROM T_Right WHERE
CHARINDEX(R_ID, ( SELECT M_Right FROM T_Module WHERE M_ID = 1 ))>0
*
FROM T_Right WHERE
R_ID in( SELECT M_Right FROM T_Module WHERE M_ID = 1
)
楼主的执行提示 是因为 M_right是字符串,而R_ID是INT.
这个要知道你的表结构。