Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用查询结果作为我的查询搜索条件_Sql_Sql Server - Fatal编程技术网

Sql 使用查询结果作为我的查询搜索条件

Sql 使用查询结果作为我的查询搜索条件,sql,sql-server,Sql,Sql Server,我正在使用SQLServer2008。我在数据库中存储了几个WHERE语句。我正在尝试使用表中的查询条件构建查询 假设我有一张名为“类别”的表格 +----------+------------------------+ | Seq | SQLWHERE +----------+------------------------+ | 0 | ([ID] >= 60010 | 1 | And

我正在使用SQLServer2008。我在数据库中存储了几个WHERE语句。我正在尝试使用表中的查询条件构建查询

假设我有一张名为“类别”的表格

+----------+------------------------+  
| 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