Notepad++ - 将 SQL Server 中的大查询变成一行

问题描述 投票:0回答:4

我在 notepad++ 中从 SQL Server 有一个大查询(1012 行),我想将此查询仅传递到一行。例如,我有这个:

SELECT *
FROM tableA
WHERE Field_A = 1

我想谈谈这个:

SELECT * FROM tableA WHERE Field_A = 1

我正在尝试使用以下代码:

  1. 打开替换对话框(Ctrl + H)
  2. 选中环绕选项
  3. 选择正则表达式搜索模式
  4. 在“查找内容:”区域中填写正则表达式
    (\h*\R)+
  5. 在替换为:区域中填写正则表达式
    \x20
  6. 单击全部替换按钮

但是它给我创建了更多新行,代码之间有很大的空间。

我该怎么做?

notepad++ string-formatting
4个回答
15
投票

您必须删除换行符后面的空格,使用此正则表达式

(?:\h*\R\h*)+

  • Ctrl+H
  • 查找内容:
    (?:\h*\R\h*)+
  • 替换为:
    A SINGLE SPACE
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

(?:         : start non capture group
    \h*     : 0 or more horizontal spaces
    \R      : any kind of linebreak (ie. \r, \n, \r\n)
    \h*     : 0 or more horizontal spaces
)+          : end group, repeated 1 or more times

更换:

A single space

举个例子:

SELECT *

            FROM tableA



WHERE Field_A = 1

给定示例的结果:

SELECT * FROM tableA WHERE Field_A = 1 

0
投票

您应该能够将行结尾

\r\n
替换为一个空格。 请注意,我将
\r
设为可选,以防您可能使用 Linux,其中行结尾只是
\n

查找:

\r?\n

替换:

[single space]

这将确保上一行的末尾和当前行的开头之间至少有一个空格。 额外的空格不应导致 SQL 查询被错误解析。


0
投票
1. Open the Replace dialog ( Ctrl + H )
2. Check the Wrap around option
3. Choose the Extended search mode
4. Fill in the regex \r\n in the Find what: zone
5. Put one white space in the Replace with: zone
6. Click on the Replace All button

根据您的换行约定,第 4 步可能是:

4bis. Fill in the regex \n in the Find what: zone

您可以使用以下命令显示换行符:

View -> Show symbols -> Show end of lines
。 如果显示
CRLF
,执行步骤 4 将回答您的问题。如果您看到
LF
,则需要执行步骤 4bis。

按照 Tim Biegeleisen 的建议,您还可以使用正则表达式搜索模式(步骤 3)并填写正则表达式

\r?\n
。这可以同时完成这两件事。


0
投票

还有另一种更简单的方法,不需要正则表达式模式匹配,只需使用(Ctrl + A)选择编辑器中要转换为单行的所有内容,然后使用快捷键(Ctrl + J),瞧!现在一切都在一条线上

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.