作为每注释It's passed as a table.
- 假设表是可变@UserInput
与Value
单个列,则可以使用一个WHERE EXISTS
子句来检查该值的在所述用户的存在输入字段,并拉取DISTINCT
Class
值。
Select Distinct Class
From YourTable T
Where Exists
(
Select *
From @UserInput U
Where T.Value = U.Value
)
您的SQL语法会有所不同,但这应该指向正确的方向,语法上。
的如何实现此将如下所示的完整例如:
创建用户定义的表类型
Create Type dbo.UserInput As Table
(
Value Varchar (10)
)
Go
创建存储过程
Create Proc dbo.spGetClassesByUserInput
(
@UserInput dbo.UserInput ReadOnly
)
As Begin
Select Distinct Class
From YourTable T
Where Exists
(
Select *
From @UserInput U
Where T.Value = U.Value
)
End
Go
用用户输入调用存储过程
Declare @Input dbo.UserInput
Insert @Input
Values ('A'), ('B'), ('C')
Execute dbo.spGetClassesByUserInput @Input
确切地说,用户提交的值格式化的方式是什么?它是一个字面上是“A,B和C”的扁平“VARCHAR”吗?还是将它作为表格传递给proc?该查询似乎很简单,但我们需要知道您如何处理用户输入。 – Siyual
当然!它以表格形式传递。所以你可以使用IN子句,但我不确定在哪里或如何做到这一点。 – Jason