代码之家  ›  专栏  ›  技术社区  ›  Chris A

如何在SQLServer中批量切换对某些行的注释/取消注释?

  •  0
  • Chris A  · 技术社区  · 6 年前

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

    背景

    为此,我需要注释行 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行。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Aaron Dietz    6 年前

    一种简单的方法是使用变量:

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

    编辑 :

    您还可以始终运行查询的重复部分,然后仅当 @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