2014-10-21 2 views
2

내가 열 이름뿐만 아니라 해당 열에서 데이터를 표시하려고 만하고있어 수 없습니다 다음 오류 때문에 :는 add 연산자에서 호환되지 않는

Msg 402, Level 16, State 1, Line 5
The data types xml and varchar are incompatible in the add operator.

Convert 또는 Cast이 경우에는 작동하지 않습니다.

코드 :

select 
    CUSTOMER_ID, 
    CURRENCY, 
    DELIVERY_METHOD, 
    CASE WHEN (COURIER_TRACKING_XML) IS NOT NULL 
      THEN dbo.GetXml(COURIER_TRACKING_XML) + 'Courier' 
    END, 
    CASE WHEN BILLING_ADDRESS IS NOT NULL 
      THEN dbo.GetXml(BILLING_ADDRESS) + 'Billing' 
    END, 
    CASE WHEN DELIVERY_ADDRESS IS NOT NULL 
      THEN dbo.GetXml(DELIVERY_ADDRESS) + 'Delivery' 
    END 
from 
    WEB_ORDERS 
+1

XML이 구조화 된 데이터이고 평균 임의의 'VARCHAR'이 아니기 때문에 연결을 허용하지 않는 것이 중요합니다. 'dbo.GetXml'이 반환하는 것은 무엇이고 왜 당신은'Courier'과 같은 문자열을 붙들고 싶습니까? 또한 정확히 어떻게'CAST'와'CONVERT'를 사용하려고 시도 했습니까? –

+0

'GetXml'이'XML' 데이터를 반환하면'+ 'Delivery'' 또는'+'Billing'' 등으로 연결 만 할 수 없습니다. 이것이 오류의 의미입니다. 'XML'은'XML'이고 ** ** 문자열 타입이 아닙니다! –

+0

쿼리를 실행할 때 출력 창에 열 이름을 표시 할 수 있도록 문자열을 집어 넣으 려합니다. 나는이 사이트에서 권고 한 CAST (@a AS VARCHAR (max))를 사용하고있다 : http://sqlserverlearner.com/2012/the-data-types-varcharmax-and-xml-are-incompatible-in-the- add-operator –

답변

0

사용 CONVERT(VARCHAR(MAX), col)은 VARCHAR에 XML 값을 변환합니다.

CASE WHEN (COURIER_TRACKING_XML) IS NOT NULL 
      THEN CONVERT(VARCHAR(MAX),dbo.GetXml(COURIER_TRACKING_XML)) + 'Courier' 
관련 문제