2013-10-03 3 views
0

SQL select 문에 다음이 있습니다. 많은 결과를 쿼리하고 쉼표로 구분하여 반환하도록하는 것이 목적입니다.쿼리는 반환 된 각 항목에 대해 공백 문자를 뒤쪽으로 반환합니다.

SUBSTRING((
     SELECT ', ' + s.jaopr 
     FROM jjops s 
     WHERE s.jajob = o.jajob 
     ORDER BY s.jaseq 
     FOR XML PATH('') 
     ), 2, 1000) 

내가 원하는 결과를 얻지 만 각 결과의 문자 수는 2 자에서 5 자까지 다양합니다. 따라서 여분의 공백이 결과에 반환됩니다.
예 : 반환 된 결과가 5 개 미만의 문자가 때 여분의 공백이되지 않도록 AA , AAA , BBBBB, BBBB , CCCCC

가 어떻게 내 문자열을 변경할 수 있습니까?

나는 내가 Substring이 무엇인지 이해 생각하지만 솔루션을 검색 할 때 나는이 복사로 꽤의 XML PATH이 무엇을 이해하지 않습니다.

답변

0

후행 (및/또는 선행) 공간없이 데이터베이스에 저장된 값을 원합니 까? 그렇다면, 그 질문은 여기에 답 것 :

Trimming text strings in SQL Server 2008

+0

내 데이터베이스가 후행 공백을 저장 한 발견했다. 솔루션 고마워! – Matt

0

여기에 XML 경로를 사용하는 것처럼 보이기 때문에 (실제로 "의도 된 사용"이라는 힌트를 얻기 위해 따옴표에 "값"같은 것을 넣으십시오) 일반적으로 사용되는 일부 결과 집합을 연결하는 것입니다. 모든 결과가 단일 문자열에있는 단일 행에 몇 개의 행을 추가합니다.

그런데 여기서 일어날 일은 하위 문자열 함수가 두 번째 문자에서 천 개까지 내부 쿼리의 전체 결과를 반환해야한다는 것입니다. ,

A 
B 
C 
D 
E 

는 XML 경로 명령은 당신에게 하는을 제공한다 : 효과는 그렇게 같은 그것의 끝에서 당신이없는 XML 경로에 이상이 SELECT 문에서 결과의 다섯 개 행이 있다면 있다는 것 B, C, D, E

쉼표 뒤에 공백이 있습니다. 하위 문자열을 사용하여 첫 번째 쉼표를 없애려는 것처럼 보이지만 중간에 쉼표 다음에 공백을 제거하지는 못합니다.

나는 그 전제에 대해 옳다면 쉼표 주변의 따옴표 안에있는 공백을 삭제하는 것이 대부분 당신이 원하는 효과를 줄 것이라고 생각합니다.

그러나이를 수행하기 위해 허용되는 방법에 대한 추가 읽기를 위해 this one과 같은 스레드를 확인할 수 있습니다.

관련 문제