Notepad ++ - превратить большой запрос из SQL Server в одну строку

SaCvP спросил: 31 июля 2018 в 09:39 в: 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)+ в поле "Найти то: zone"
  5. Заполните регулярное выражение \x20 в Replace: zone
  6. Нажмите кнопку "Заменить все"

Но это создает мне несколько новых строк с большим пространством между кодом.

Как я могу это сделать?

3 ответа

Есть решение
Toto ответил: 31 июля 2018 в 10:58

Вы должны удалить пробелы сразу после перевода строки, используйте это регулярное выражение (?:\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 tableAWHERE Field_A = 1

Результат для данного примера:

SELECT * FROM tableA WHERE Field_A = 1 
Tim Biegeleisen ответил: 31 июля 2018 в 09:41

Вы можете просто заменить \r\n, заканчивающийся строкой, одним пробелом. Обратите внимание, что я делаю \r необязательным, на случай, если вы находитесь в Linux, где конец строки просто \n.

Find:

\r?\n

Заменить:

[single space]

Это обеспечит как минимум один пробел между концом предыдущей строки и начало текущей строки. Лишние пробелы не должны вызывать неправильный анализ SQL-запроса.

Trevor65 ответил: 31 июля 2018 в 10:07
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 .If CRLF отображается, выполнение шага 4 ответит на ваш вопрос. Если вы видите LF, вам нужно будет выполнить шаг 4bis.

В соответствии с предложением Тима Бигелайзена вы также можете использовать режим поиска по регулярному выражению (шаг 3) и заполнить регулярное выражение \r?\n. Это то, что делает оба сразу.