Sql server 如何在SQL Server中批量切换注释/取消注释某些行?
是否有办法在SSMS内或通过第三方应用程序选择一批行以切换其评论状态 Background:在我的查询中,有两种“搜索模式”可供选择 为此,我需要注释行Sql server 如何在SQL Server中批量切换注释/取消注释某些行?,sql-server,ssms,Sql Server,Ssms,是否有办法在SSMS内或通过第三方应用程序选择一批行以切换其评论状态 Background:在我的查询中,有两种“搜索模式”可供选择 为此,我需要注释行19,107,108,112,以及取消注释行232。然后我需要做相反的事情,回到另一个“模式” 有没有什么方法可以自动化这个过程,而不是滚动查询 示例: 1 --select distinct x.name from ( 2 select name, dateofbirth, favouritecolour 3 from classmate
19
,107
,108
,112
,以及取消注释行232
。然后我需要做相反的事情,回到另一个“模式”
有没有什么方法可以自动化这个过程,而不是滚动查询
示例:
1 --select distinct x.name from (
2 select name, dateofbirth, favouritecolour
3 from classmates
4 where dateofbirth between '01-Mar-1990' and '17-Apr-1995'
5 --)x
6 union all
7 --select distinct x.name from (
8 select name, relationship, location
9 from family
10 where relationship = 'uncle'
11 --)x
对于完整的细节,我可以有这样的查询。如果我只需要这些名称,我会取消注释第1、5、7和11行
我的实际例子跨越数百行,涉及注释和取消注释,作为同一“转换”的一部分一种简单的方法是使用变量:
--Searchmode 0 = Path A
--Searchmode 1 = Path B
DECLARE @SearchMode int = 0 --Change this to change path
IF @SearchMode = 0
BEGIN
SELECT blah
FROM tableA
END
IF @SearchMode = 1
BEGIN
SELECT blah
FROM tableB
END
您还可以将其作为一个程序:
CREATE PROCEDURE dbo.exampleProc @SearchMode int
AS
BEGIN
IF @SearchMode = 0
BEGIN
SELECT blah
FROM tableA
END
IF @SearchMode = 1
BEGIN
SELECT blah
FROM tableB
END
END
然后执行它并输入参数值,如下所示:
EXEC dbo.exampleProc 0
EXEC dbo.exampleProc 1
编辑:
1 --select distinct x.name from (
2 select name, dateofbirth, favouritecolour
3 from classmates
4 where dateofbirth between '01-Mar-1990' and '17-Apr-1995'
5 --)x
6 union all
7 --select distinct x.name from (
8 select name, relationship, location
9 from family
10 where relationship = 'uncle'
11 --)x
您还可以让查询的重复部分始终运行,然后仅当@SearchMode=1
时才运行额外的过滤器。比如:
DECLARE @SearchMode int = 0
select name, dateofbirth, favouritecolour
into #temp
from classmates
where dateofbirth between '01-Mar-1990' and '17-Apr-1995'
union all
select name, relationship, location
from family
where relationship = 'uncle'
IF @SearchMode = 0
BEGIN
SELECT *
FROM #temp
END
IF @SearchMode = 1
BEGIN
SELECT DISTINCT Name
FROM #temp
END
为什么不制作一个在两种模式之间交替的位变量呢?我不熟悉位变量。我必须注释掉的东西只是
选择不同的名称,从(
…)x中选择一些内容,用于两组查询,并删除一些排序/分组argh,无法理解此注释标记,右括号和x应该在选择括号和左括号的下方。@SubqueryCrunch你应该用一个例子来回答这个问题。这会起作用,但缺点是我会加倍处理查询,如果我对查询进行任何更改,我将不得不执行两次。@ChrisA我发布了另一种可能的解决方案。旁注,有一些键盘快捷键可以满足您的特定需要:CTRL+A
高亮显示全部,CTRL+KU
取消对全部进行注释,CTRL+Z
撤消(重新注释)。我不认为这是一个惊人的可伸缩的选择,但值得一提的是,如果你不知道这些。当然,这只有在你没有任何其他评论的情况下才有效。我现在无法测试这一点(编辑:…部分),但临时表是否只有选择的“同学”部分,还是在联合后也有选择?我认为这将是我所需要的完美。谢谢:)