programing

SSMS 결과 그리드 - CRLF가 복사/붙여넣기로 보존되지 않음 - 더 나은 기술이 있습니까?

jooyons 2023. 6. 19. 21:27
반응형

SSMS 결과 그리드 - 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 형식 파일, 다른 열에는 테이블 만들기 스크립트 등이 있습니다.

문제는 SSMS 16.5 빌드 13.0.16000.28에서 수정되었으며 복사/저장 시 CR/LF를 보존하는 옵션이 추가되었습니다(자세한 내용은 참조)(연결 버그).

  1. 도구 > 옵션
  2. 쿼리 결과 > SQL Server > 결과를 그리드로 확장
  3. 복사 또는 저장 시 CR/LF 유지를 선택합니다.
  4. SSMS 다시 시작

이것은 원인이 될 것입니다.CR,LF,그리고.CRLF셀을 복사할 때 새 줄로 처리됩니다.

여기가 어디인지 전혀 기억이 나지 않기 때문에 스스로 답을 합니다.

enter image description here

경고:이 기능에는 분명히 버그가 남아 있습니다.

우선 몇 달 동안 옵션에 손을 대지 않았고 최근에 재부팅했습니다.

몇 개의 열에 대한 질문이 있었는데, 그 중 하나에는 고객 피드백(라인 피드 포함)이 포함되어 있었습니다.결과를 Google Docs/Excel에 붙여 넣었을 때 피드백이 원하는 대로 한 줄로 전달되었습니다.

그런 다음 쿼리를 다른 파일로 복사하고 다시 실행했습니다.이번에는 결과에 줄 바꿈이 포함되었습니다!

따라서 매우 이상한 버그가 있거나 현재 창의 설정을 변경하는 비밀 단축키가 있습니다.다른 사람이 이 동작을 볼 경우 관심이 있습니다.

해킹이지만, 이것을 시도해 보십시오.

줄 바꿈을 유지하기 위해 결과 집합을 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)

또는 좋은 텍스트 편집기에서.

한 가지 방법은 결과를 파일로 보낸 다음 출력을 이해하는 데 탁월한 기능을 가진 변경 사항을 파일을 감시할 수 있는 편집기를 사용하는 것입니다.

언급URL : https://stackoverflow.com/questions/2679481/ssms-results-to-grid-crlf-not-preserved-in-copy-paste-any-better-techniques

반응형