我在 notepad++ 中从 SQL Server 有一个大查询(1012 行),我想将此查询仅传递到一行。例如,我有这个:
SELECT *
FROM tableA
WHERE Field_A = 1
我想谈谈这个:
SELECT * FROM tableA WHERE Field_A = 1
我正在尝试使用以下代码:
(\h*\R)+
\x20
但是它给我创建了更多新行,代码之间有很大的空间。
我该怎么做?
您必须删除换行符后面的空格,使用此正则表达式
(?:\h*\R\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
您应该能够将行结尾
\r\n
替换为一个空格。 请注意,我将 \r
设为可选,以防您可能使用 Linux,其中行结尾只是 \n
。
查找:
\r?\n
替换:
[single space]
这将确保上一行的末尾和当前行的开头之间至少有一个空格。 额外的空格不应导致 SQL 查询被错误解析。
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
。这可以同时完成这两件事。
还有另一种更简单的方法,不需要正则表达式模式匹配,只需使用(Ctrl + A)选择编辑器中要转换为单行的所有内容,然后使用快捷键(Ctrl + J),瞧!现在一切都在一条线上
希望这有帮助