如何在没有EXEC和打印功能的情况下获取QueryString

时间:2015-05-19 07:45:59

标签: sql sql-server

我还有其他表#table3 ,其中@qur将被存储,并使用@qur我想要检索数据。 所以可以在不设置其他变量的所有查询的情况下获取数据并直接执行此查询。

@qur字符串未修复,对于不同的人而言会有所不同。 是的我使用sql server 2010

CREATE TABLE #Table1
    ([Name] varchar(5), [DateVal] date, [TimeVal] time, [Item] varchar(5))
;

INSERT INTO #Table1
    ([Name], [DateVal], [TimeVal], [Item])
VALUES
    ('Lisa', '2015-04-21', '10:20:06', 'Item1'),
    ('John', '2015-04-21', '10:25:30', 'Item2'),
    ('Peter', '2015-03-18', '13:35:32', 'Item3'),
    ('Ralf', '2015-04-03', '09:26:52', 'Item4')
;   

CREATE TABLE #Table2
    ([ID] int, [Name] varchar(5))
;

INSERT INTO #Table2
    ([ID],[Name])
VALUES
    (1,'Lisa' ),
    (2,'John' ),
    (3,'Peter'),
    (4,'Ralf')
;  





   DECLARE @qur VARCHAR(2000)='([Item] in (''Item1,Item2'')) and  [Name]=''Lisa'') '
       SELECT DateVal FROM #Table1 
       WHERE [Name] in (SELECT [Name] FROM #Table2)     
   AND @qur

1 个答案:

答案 0 :(得分:1)

也许您可以在SQLCMD模式下使用以下查询:

:setvar qur  "and ([Item] in ('Item1','Item2')) and  [Name]='Lisa' "

SELECT DateVal FROM #Table1 
WHERE [Name] in (SELECT [Name] FROM #Table2) 
$(qur)