2016-10-27 3 views
0

QUOTENAME을 사용하여 대괄호로 묶인 문자열의 각 부분을 묶으려고하지만 문자열의 첫 번째 인스턴스를 묶는 솔루션을 찾을 수 없습니다.T- SQL Server 2012 QUOTENAME 문자열의 첫 번째 인스턴스에 문제가 발생했습니다

CREATE TABLE dbo.Products 
(
    ProductID INT PRIMARY KEY, 
    Name  NVARCHAR(255) NOT NULL UNIQUE 
    /* other columns */ 
); 
INSERT dbo.Products VALUES 
(1, N'foo'), 
(2, N'bar'), 
(3, N'kin'), 
(4, N'blat'); 

DECLARE @Split varchar (1000) 
SET @Split = '' 

SELECT @Split = 
    CASE WHEN @Split = '' 
    THEN Name 
    ELSE @Split + coalesce(',' + QUOTENAME(Name),'') 

    END 
    FROM dbo.Products 

PRINT @Split 

결과 : 나는 '바'가 필요

bar,[blat],[foo],[kin] 

는 []로 묶어야합니다.

+0

안녕하세요, 난 그냥 질문을 편집하고 OrderDetail''에 대한 코드를 제거했습니다. 여기서는 필요하지 않은 것 같습니다. 내가 잘못 했더니 롤백 해주세요. – Shnugo

답변

2

dbo.Products의 모든 값을 연결하는 접근 방식은 다음과 같이 수행하는 것이 좋습니다 :

SELECT STUFF(
(
    SELECT ',' + QUOTENAME(Name) 
    FROM dbo.Products 
    FOR XML PATH('') 
),1,1,''); 

그러나 실제 질문에 대답 :

당신은뿐만 아니라 처음에 QUOTENAME를 사용해야합니다 ! 귀하의 경우 문에서

SELECT @Split = 
    CASE WHEN @Split = '' 
    THEN Name <-- Use QUOTENAME here as well 
    ELSE @Split + coalesce(',' + QUOTENAME(Name),'') 
1

당신은 QUOTENAME()

WHEN @Split = '' 
    THEN QUOTENAME(Name) 

나는 희망이 도움이 누락되었습니다.

최고 감사합니다,
KARTHIK