Результаты SSMS для Grid - CRLF не сохраняется при копировании / вставке - есть ли лучшие методы?

Когда у меня есть результат в сетке, как:

SELECT 'line 1
line 2
line 3'

или же

SELECT 'line 1' + CHAR(13) + CHAR(10) + 'line 2' + CHAR(13) + CHAR(10) + 'line 3'

Со встроенным CRLF отображение в сетке, кажется, заменяет их пробелами (я предполагаю, что они будут отображать все данные).

Проблема в том, что если я генерирую код сценария, я не могу просто вырезать и вставить его. Я должен преобразовать код, чтобы открыть курсор и распечатать соответствующие столбцы, чтобы я мог скопировать и вставить их из результатов поиска текста.

Есть ли более простой обходной путь для сохранения CRLF в операции копирования / вставки из таблицы результатов?

Причина того, что сетка полезна, заключается в том, что в настоящее время я генерирую несколько сценариев для одного и того же объекта в разных столбцах - bcp в одном столбце, файл формата xml в другом, сценарий создания таблицы в другом и т. Д...

6 ответов

Решение

Я считаю, что в этой статье есть несколько методов, которые могут быть полезны: http://sqlblogcasts.com/blogs/martinbell/archive/2009/10/25/How-to-display-long-text-in-SSMS.aspx

Эта проблема была исправлена ​​в SSMS 16.5 build 13.0.16000.28 с добавлением опции сохранения CR/LF при копировании / сохранении ( подробнее) ( ошибка подключения).

  1. Инструменты> Параметры
  2. Разверните Результаты запроса> SQL Server > Результаты в таблицу
  3. Установите флажок Сохранить CR/LF при копировании или сохранении
  4. Перезапустите SSMS

Это приведет к CR, LF, а также CRLF будет рассматриваться как перевод строки при копировании ячейки.

Отвечаю на это для себя, потому что я никогда не могу вспомнить, где это:

Предупреждение: в этой функции определенно есть какая-то ошибка.

Прежде всего, я не трогал эту опцию несколько месяцев и недавно перезагрузился.

У меня был запрос с несколькими столбцами, один из которых содержал отзывы клиентов (с переводом строки). Когда я вставил результаты в Google Docs/Excel, отзывы ушли в одну строку (как я и хотел).

Затем я скопировал запрос в другой файл и снова запустил его. На этот раз результаты содержали разрывы строк!

Так что либо это очень странная ошибка, либо какой-то секретный ярлык, который меняет настройку для текущего окна. Интересно, если кто-нибудь еще видит это поведение.

Это взлом, но попробуйте это:

оберните ваш набор результатов в ЗАМЕНА (.....,CHAR(13)+CHAR(10),CHAR(182)), чтобы сохранить разрывы строк, вы можете затем заменить их обратно

SELECT 
    REPLACE ('line 1' + CHAR(13) + CHAR(10)+ 'line 2' + CHAR(13) + CHAR(10) + 'line 3'
            ,CHAR(13)+CHAR(10),CHAR(182)
            )

ВЫХОД:

----------------------
line 1¶line 2¶line 3

(1 row(s) affected)

замените их обратно в SQL:

select replace('line 1¶line 2¶line 3',CHAR(182),CHAR(13)+CHAR(10))

выход:

-------------------
line 1
line 2
line 3

(1 row(s) affected)

или в хорошем текстовом редакторе.

Одна вещь, которую вы можете сделать, это отправить результаты в файл, а затем использовать редактор, способный просматривать файл на предмет изменений, который обладает превосходными возможностями для понимания результатов.

Другие вопросы по тегам