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

时间:2018-08-24 11:19:13

标签: notepad++ string-formatting

我在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. 单击全部替换按钮

但这正在为我创建更多的新行,并且代码之间有很大的间隔。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

您必须在换行符后删除空格,使用此正则表达式(?:\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 

答案 1 :(得分:0)

您应该可以将行末的\r\n替换为一个空格。请注意,如果您使用的是Linux,行尾仅为\r,则我将\n设为可选。

查找:

\r?\n

替换:

[single space]

这将确保前一行的末尾与当前行的开头之间至少有一个空格。多余的空格不应导致对SQL查询的解析不正确。

答案 2 :(得分: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,则需要执行步骤4之二。

如Tim Biegeleisen所建议,您还可以使用正则表达式搜索模式(步骤3)并填写正则表达式\r?\n。这一次可以完成。