Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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 server 如何在SQL Server中批量切换注释/取消注释某些行?_Sql Server_Ssms - Fatal编程技术网

Sql server 如何在SQL Server中批量切换注释/取消注释某些行?

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

是否有办法在SSMS内或通过第三方应用程序选择一批行以切换其评论状态

Background:在我的查询中,有两种“搜索模式”可供选择

为此,我需要注释行
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
撤消(重新注释)。我不认为这是一个惊人的可伸缩的选择,但值得一提的是,如果你不知道这些。当然,这只有在你没有任何其他评论的情况下才有效。我现在无法测试这一点(编辑:…部分),但临时表是否只有选择的“同学”部分,还是在联合后也有选择?我认为这将是我所需要的完美。谢谢:)