Notepad ++ - превращает большой запрос из SQL Server в одну строку - PullRequest
0 голосов
/ 24 августа 2018

У меня большой запрос от SQL Server в notepad ++ (1012 строк), и я хочу передать этот запрос только одной строке.Например, у меня есть это:

SELECT *
FROM tableA
WHERE Field_A = 1

И я хочу перейти к этому:

SELECT * FROM tableA WHERE Field_A = 1

Я пытаюсь с помощью следующего кода S:

  1. Откройте диалоговое окно «Заменить» (Ctrl + H)
  2. Установите флажок «Обтекание»
  3. Выберите режим поиска регулярных выражений
  4. Введите регулярное выражение (\h*\R)+ в поле НайтиЧто: зона
  5. Заполните регулярное выражение \x20 в поле Заменить на: зона
  6. Нажмите на кнопку Заменить все

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

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

Ответы [ 3 ]

0 голосов
/ 24 августа 2018
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.

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

0 голосов
/ 24 августа 2018

Вы должны удалить пробелы сразу после перевода строки, используйте это регулярное выражение (?:\h*\R\h*)+

  • Ctrl + H
  • Найти что: (?:\h*\R\h*)+
  • Заменить на: A SINGLE SPACE
  • check Wrap вокруг
  • check Регулярное выражение
  • Заменить все

Пояснение:

(?:         : 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 голосов
/ 24 августа 2018

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

Найти:

\r?\n

Заменить:

[single space]

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

...