将查询结果用作我的查询搜索条件

时间:2016-03-09 22:11:55

标签: sql sql-server

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

所以我想说我有一个名为'Categories'的表

+----------+------------------------+  
| Seq | SQLWHERE          
+----------+------------------------+  
|        0 | ([ID] >= 60010   
|        1 | And                      
|        2 | [ID] <= 60020)   
|        3 | Or                       
|        4 | [ID] = 60025     
|        5 |  Or                      
|        6 | [ID] = 60035)   
+----------+------------------------+  

所以本质上我需要构建一个按照序列0-6的顺序使用上面的SQLWHERE行的查询。

所以我需要下面的效果,但这不起作用。

SELECT *
FROM AnotherTable
WHERE (SELECT SQLWHERE FROM Categories ORDER BY Seq)

因为我想要SQL查询来呈现

SELECT *
FROM AnotherTable
WHERE  
([ID] >= 60010   
And                      
[ID] <= 60020)   
Or                       
[ID] = 60025     
Or                      
[ID] = 60035)   

2 个答案:

答案 0 :(得分:0)

首先转换字符串Concatenate many rows into a single text string?

中的每一行

并将其传递给sp_executesql

答案 1 :(得分:0)

您将不得不创建一个函数或存储过程来查询where项并动态构建SQL。然后使用附加的where子句执行SQL。这是一个存储的proc示例。改变&#34; AnotherTable&#34;到您的表名并将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