Microsoft SQL Server 2008 및 Visual Studio의 Express 버전 만 있습니다. 나는 SQL 서버 프로젝트를 만들 수 있음을 감안할 때, 따라서 CLR 솔루션은 밖으로 질문입니다, 나는 행 연결된 COL2를 얻을 수MySQL의 group_concat 및 이스케이프 된 문자열의 SQL Server 버전
select col1, stuff((select ' ' + col2
from StrConcat t1
where t2.col1 = t1.col1
for xml path('')
),1,1,'')
from StrConcat t2
group by col1
order by col1
을 사용하려고했습니다. col2는 & 및 \ n과 같은 일부 제어 문자가있는 varchar 필드입니다. 위의 SQL과 연결하면 제어 문자를 벗어나는 것처럼 보입니다. &이 & amp; \ n이 & #xOD가됩니다. 이는 원하지 않습니다. col1과 연결된 필드가 다른 테이블을 업데이트하는 데 사용될 경우 연결된 필드를 이스케이프 처리되지 않은 원래 형식으로 가져 오는 가장 좋은 방법은 무엇입니까 아니면 존재하지 않으며 유일한 방법은 외부 코드를 사용하는 것입니까?
테이블 스키마는 다음과 같다 : StrConcat (ID INT 기본 키, COL1 INT, TXT의 VARCHAR (80)) COL1 그것에 인덱스가, TXT는 그룹 내 ID 발주, COL1 그룹화한다.
'for xml' 부분은 xml을 응답에 추가합니다. 즉,이 방법을 사용할 때의 단점 중 하나입니다. 그 문제를 생략하는 것이 쉬운 지 확실하지 않습니다. – Wolph
좋은 지적. 그래서 나는 진짜 문제는, 그 단점없이 똑같은 것을 달성 할 수있는 더 나은 해결책이 무엇인지 생각합니다. – TheObserver
쉼표를 사용하여 시도한 다음 REPLACE 함수를 사용하여 쉼표를 실제로 원하는 마크 업으로 바꿀 수 있습니다. –