如何在SQL Server Management Studio (SSMS)中删除空行?

14

我有很多.sql文件,里面有很多空行,例如:

WITH

  cteTotalSales (SalesPersonID, NetSales)

  AS

  (

    SELECT SalesPersonID, ROUND(SUM(SubTotal), 2)

    FROM Sales.SalesOrderHeader

    WHERE SalesPersonID IS NOT NULL

    GROUP BY SalesPersonID

  )

SELECT

  sp.FirstName + ' ' + sp.LastName AS FullName,

  sp.City + ', ' + StateProvinceName AS Location,

  ts.NetSales

FROM Sales.vSalesPerson AS sp

  INNER JOIN cteTotalSales AS ts

    ON sp.BusinessEntityID = ts.SalesPersonID

ORDER BY ts.NetSales DESC

有没有办法在SQL Server Management Studio(SSMS)中删除这些空行?

这就是我想要的:

WITH
  cteTotalSales (SalesPersonID, NetSales)
  AS
  (
    SELECT SalesPersonID, ROUND(SUM(SubTotal), 2)
    FROM Sales.SalesOrderHeader
    WHERE SalesPersonID IS NOT NULL
    GROUP BY SalesPersonID
  )
SELECT
  sp.FirstName + ' ' + sp.LastName AS FullName,
  sp.City + ', ' + StateProvinceName AS Location,
  ts.NetSales
FROM Sales.vSalesPerson AS sp
  INNER JOIN cteTotalSales AS ts
    ON sp.BusinessEntityID = ts.SalesPersonID
ORDER BY ts.NetSales DESC
8个回答

30

您可以在SSMS中使用正则表达式来完成:

  1. 按Ctrl-H打开“查找和替换”窗口
  2. 选择“使用 -> 正则表达式”
  3. 将“^\n”放入“查找内容”中
  4. 保持“替换为”为空
  5. 单击“替换(全部)”

祝好运!


2
这应该是正确答案,不确定为什么其他的不是。 - haku
3
因为它是正确答案,而且在问题提出后6分钟就被给出,使得提问者能够找到所需的具体解决方案。相比之下,这个回答提出了相同的解决方案,复制了提问者在被接受的答案的评论中已经提供的信息,并在答案被标记为被接受后4个月才被给出。虽然这个答案更加清晰,但我们可以看到这反映在投票中。一切都如预期那样,系统工作正常! :-) - RyanfaeScotland
1
@RyanfaeScotland - 完全有道理。感谢您抽出时间提供解释。 - haku

18

我按照以下步骤操作,对我有效。

  1. 菜单 工具自定义命令添加命令编辑删除空行确定
  2. 删除空行 菜单出现在 文件 菜单旁边。
  3. 打开/选择查询 - 点击 "删除空行"。
  4. 享受。

1
谢谢 - 这是唯一有效的方法,正则表达式找不到 ^n。 - Richard Turner
奇怪的是,我也不得不采用这种方法,因为正则表达式没有起作用。如果有人能够解释一下原因,那就很有趣了。 - Jon.Mozley
这是正确的答案 - 既然有内置的方法可以做到,为什么要费力地使用正则表达式呢? - AGB

6

1
似乎在这里可以工作 查找内容:\n\n*替换为:\n - Junior Mayhé

4

这不是内置的功能。查找和替换可以与正则表达式一起使用,有些聪明的人可能有解决方案。


6
谢谢,我是这样自己解决的:使用正则表达式替换,并在行首查找换行符:^\n。将其替换为空。 - atricapilla
@所有人,请查看下一个答案以获取步骤。 - Vishal Sharma

3

菜单 工具自定义命令添加命令编辑删除空行确定


0

Redgate Sql Toolbelt非常适合这个需求。该软件包含Sql PromptSql Refactor,可以轻松格式化查询语句(即使原本格式非常混乱)。它可以让你减少空格,根据需要移动内容。

代码自动完成 在输入SQL时,SQL Prompt会提供无干扰的支持,建议适当的关键字、表、视图和其他数据库对象。它甚至会基于外键约束或匹配列名提供完整的连接条件。在有意义的情况下,SQL Prompt会为您完成整个语句,例如INSERT或ALTER VIEW。

SQL重新格式化(仅限专业版) 格式化SQL命令可以将任何SQL重新格式化以符合您选择的编码风格。清晰准确的格式化使得理解复杂的SQL变得更加容易,并有助于在整个团队中保持一致的风格。

虽然不是免费的,但如果您有预算,它绝对值得一试。


SQL是否有相应的“编码标准”? - Peter Mortensen

0

如果你发现使用正则表达式查找和替换^\n为空白无效,那么可能是因为你的文件包含CR LF而不仅仅是LF。在这种情况下,使用^\r\n代替可以解决问题。


-1

使用“查找和替换”功能,将“^\n”作为查找条件,并将替换内容留空。

此外,在“查找”选项中勾选“使用正则表达式”。


1
“with fine”是什么意思?(请通过编辑您的答案来回复,不要在评论中回复)。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接