Результаты 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 при копировании / сохранении ( подробнее) ( ошибка подключения).
- Инструменты> Параметры
- Разверните Результаты запроса> SQL Server > Результаты в таблицу
- Установите флажок Сохранить CR/LF при копировании или сохранении
- Перезапустите 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)
или в хорошем текстовом редакторе.
Одна вещь, которую вы можете сделать, это отправить результаты в файл, а затем использовать редактор, способный просматривать файл на предмет изменений, который обладает превосходными возможностями для понимания результатов.