Подтвердить что ты не робот

Результаты 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 дисплей в сетке, как представляется, заменяет их пробелами (я предполагаю, что они будут отображать все данные).

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

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

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

4b9b3361

Ответ 2

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

МЕТОДИЧЕСКИЕ

Перейдите к OptionsQuery ResultsSQL ServerResults to Grid и выберите Retain CR/LF on copy or save.

Это приводит к тому, что CR, CL или CRLF сохраняются как одна новая строка.

Ответ 3

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

Ответ 4

это взломать, но попробуйте следующее:

оберните свой результирующий набор в 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)

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