Sql 使用查询结果作为我的查询搜索条件
我正在使用SQLServer2008。我在数据库中存储了几个WHERE语句。我正在尝试使用表中的查询条件构建查询 假设我有一张名为“类别”的表格Sql 使用查询结果作为我的查询搜索条件,sql,sql-server,Sql,Sql Server,我正在使用SQLServer2008。我在数据库中存储了几个WHERE语句。我正在尝试使用表中的查询条件构建查询 假设我有一张名为“类别”的表格 +----------+------------------------+ | Seq | SQLWHERE +----------+------------------------+ | 0 | ([ID] >= 60010 | 1 | And
+----------+------------------------+
| Seq | SQLWHERE
+----------+------------------------+
| 0 | ([ID] >= 60010
| 1 | And
| 2 | [ID] <= 60020)
| 3 | Or
| 4 | [ID] = 60025
| 5 | Or
| 6 | [ID] = 60035)
+----------+------------------------+
因为我想用SQL查询来呈现
SELECT *
FROM AnotherTable
WHERE
([ID] >= 60010
And
[ID] <= 60020)
Or
[ID] = 60025
Or
[ID] = 60035)
选择*
从另一张桌子
哪里
([ID]>=60010)
及
[ID]首先转换字符串中的每一行
然后将其传递给首先转换字符串中的每一行
然后将其传递给您必须创建一个函数或存储过程来查询where项并动态构建SQL。然后使用附加的where子句执行SQL。下面是一个存储过程示例。将“AnotherTable”更改为表名,将CategoryX更改为Category
CREATE PROCEDURE ExecutDynamicWhere
AS
BEGIN
DECLARE @Where VARCHAR(8000)
DECLARE @sql VARCHAR(8000)
SELECT @Where = COALESCE(@Where + ' ', '') + SQLWhere From CategoryX
Set @sql = 'SELECT * FROM AnotherTable WHERE ' + @Where
EXECUTE sp_executesql @sql
END
GO
您必须创建一个函数或存储过程来查询where项并动态生成SQL。然后使用附加的where子句执行SQL。下面是一个存储过程示例。将“AnotherTable”更改为表名,将CategoryX更改为Category
CREATE PROCEDURE ExecutDynamicWhere
AS
BEGIN
DECLARE @Where VARCHAR(8000)
DECLARE @sql VARCHAR(8000)
SELECT @Where = COALESCE(@Where + ' ', '') + SQLWhere From CategoryX
Set @sql = 'SELECT * FROM AnotherTable WHERE ' + @Where
EXECUTE sp_executesql @sql
END
GO