Ответ 1
Я считаю, что в этой статье есть несколько методов, которые могут быть полезны: http://sqlblogcasts.com/blogs/martinbell/archive/2009/10/25/How-to-display-long-text-in-SSMS.aspx
Когда у меня есть результирующий набор в сетке, например:
SELECT 'line 1
line 2
line 3'
или
SELECT 'line 1' + CHAR(13) + CHAR(10) + 'line 2' + CHAR(13) + CHAR(10) + 'line 3'
При использовании встроенного CRLF дисплей в сетке, как представляется, заменяет их пробелами (я предполагаю, что они будут отображать все данные).
Проблема в том, что если я создаю код script, я не могу просто вырезать и вставить его. Мне нужно преобразовать код, чтобы открыть курсор и напечатать соответствующие столбцы, чтобы я мог копировать и вставлять их из результатов текста.
Есть ли более простой способ обхода CRLF в операции копирования/вставки из сетки результатов?
Причина, по которой сетка полезна, заключается в том, что в настоящее время я создаю несколько сценариев для одного и того же объекта в разных столбцах - bcp out в одном столбце, файл формата xml в другом, таблица create script в другой, и т.д.
Я считаю, что в этой статье есть несколько методов, которые могут быть полезны: 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 на копирование/сохранение (подробнее) (Ошибка подключения).
МЕТОДИЧЕСКИЕ
Перейдите к Options
→ Query Results
→ SQL Server
→ Results to Grid
и выберите Retain CR/LF on copy or save
.
Это приводит к тому, что CR, CL или CRLF сохраняются как одна новая строка.
Одна вещь, которую вы можете сделать - отправить результаты в файл, а затем использовать редактор, способный просматривать файл для изменений, который имеет превосходные возможности для понимания вывода.
это взломать, но попробуйте следующее:
оберните свой результирующий набор в REPLACE (....., 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)
или в хорошем текстовом редакторе.