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

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

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 в другом, скрипт создания таблицы в другом и т. Д. ...

Ответы [ 4 ]

59 голосов
/ 17 мая 2016

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

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

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

2 голосов
/ 08 мая 2010

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

0 голосов
/ 29 апреля 2010

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

0 голосов
/ 21 апреля 2010

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

Оберните ваш набор результатов в ЗАМЕНУ (....., 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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...