sql-server - 如何在 SQL Server 中批量切换注释/取消注释某些行?
问题描述
有没有办法在 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 行。
我现实生活中的例子分布在数百行中,并且将涉及评论和取消评论作为同一“过渡”的一部分
解决方案
一个简单的方法是使用一个变量:
--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
推荐阅读
- android - 在 Android 10(及更高版本)上,如何以编程方式检测哪个应用程序在外部/辅助屏幕的前台运行?
- javascript - 如何为购物车制作数量变化功能?
- python - 如何从 PYCHARM 中找到正确的 python 解释器并在 cmd 中使用相同的解释器?
- javascript - for循环中的随机延迟setTimeout
- autodesk-forge - 有没有办法在查看器中使用 BoxSelection 扩展启用部分选择
- java - 您可以垂直打印生成的随机数(10 个整数)一维数组吗?
- python - Pytest 测试套件在 GitHub Actions 上随机出现错误,无需更改
- python - 从 csv 文件动态创建数据框
- javascript - 如何根据两个过滤器过滤对象数组?
- java - 在 Java 中使用字符串创建一个简单的计算器