[英]select from table where @variable in(table column)
您能否更正此sqlserver查询:
select * from messages where @DepartID In(MsgTo)
@DepartID是包含Department ID的会话变量。 MsgTo是邮件表中的一列,其中包含值列表,例如。 :'12','10','13','25'..等
我用这个代码:
cmd.CommandText = "select * from messages where @DepartID IN(MsgTo)"
cmd.Parameters.AddWithValue("@DepartID ", session("DepartID")) ' = 12 for example
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)
lbmsg.text = dt.Rows.Count.ToString ' returns 0 rows
对不起,我英语不好
我认为您只是在语法上有些麻烦。 您是否在SQL中声明了@DepartID变量? 您需要与WHERE子句中的现有列进行比较。 喜欢:
SELECT [ColumnName]
FROM [Table]
WHERE [ColumnName] = Value
如果部门ID是SQL中的文本类型的列,则必须在输入中使用单引号。 当您使用“ IN”语句查询单引号时,无论如何都可以使用整数(例如ID),单引号仍然可以使用。 尝试这个:
SELECT *
FROM [messages]
WHERE [MsgTo] = @DepartID
因此,如果用值替换@DepartID变量,然后执行该语句,它将返回[MsgTo]列等于@DepartID的每一行的所有信息。
如果要传递多个@DepartID,则必须使用变量将逗号分隔的文本列表传递给“ IN”子句,如下例所示:
SELECT *
FROM [messages]
WHERE [MsgTo] IN ('1','5','3','12','30')
--Example where @DepartID = '1','5','3','12','30'
我不确定您用来执行SQL的语言,但是如果这样做不起作用,请尝试将SQL语句封装在EXEC()中,如下所示:
EXEC(
SELECT *
FROM [messages]
WHERE [MsgTo] = @DepartID
)
如果您的MsgTo列包含值的字符串列表,并且您想在其中搜索单个@DepartID,请使用以下代码:
DECLARE @DepartID as INT; SET @DepartID = 12; --Hard coded example
SELECT *
FROM [messages]
WHERE [MsgTo] LIKE ('%,'''+@DepartID+''',%')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.