>

아래 쿼리가 있습니다. 작업중 인 도구로 여러 SELECT 문을 사용하고 있는데 어떤 이유로 든 첫 번째 줄에 단일 SELECT 값을 가진 FROM 절이 필요합니다.

DOCUMENT_ID는 정수 유형 열입니다. 이 쿼리의 출력으로 DOCUMENT_ID가 쉼표로 구분 된 값으로 필요합니다. (예 : 1234,7786, 6478, 5835)

문제는 아래 오류가 발생한다는 것입니다. 누군가 도와주세요.

varchar 값 ','을 데이터 유형 int로 변환 할 때 변환에 실패했습니다. CAST를 사용하여 NVARCHAR로 변환 사용에 관한 게시물을 읽었지만 구문 오류가 발생합니다. 정확히 어디에 적용 할 수 있습니까?

SELECT DOCUMENT_ID FROM (
SELECT STUFF
(
    (
        SELECT ',' + em.DOCUMENT_ID 
        FROM(
            SELECT distinct a.DOCUMENT_ID AS DOCUMENT_ID FROM A_DOCUMENT a
            inner join PRICE_RECORD wk ON a.DOCUMENT_ID = wk.DOCUMENT_ID
            WHERE a.APPROVAL_STATUS = 'Submitted'
            ) em
        ORDER BY em.DOCUMENT_ID FOR XML PATH('')
    ),
     1, 1, '') AS DOCUMENT_ID
) AS Output

감사합니다.


  • 답변 # 1

    DOCUMENT_ID 인 경우   int 입니다  그런 다음 ',' + em.DOCUMENT_ID 를 교체하십시오.  다음 중 하나와 함께 :

    CONCAT(',', em.DOCUMENT_ID) --SQL Server 2012+
    ',' + CONVERT(varchar(10),em.DOCUMENT_ID)
    --Or, if you prefer CAST
    ',' + CAST(em.DOCUMENT_ID AS varchar(10))
    
    

    int   varchar 보다 데이터 유형 우선 순위가 높습니다. 따라서 쉼표 ( ',' ) )이 암시 적으로 int 로 변환되었습니다. 전환 오류가 발생했습니다.

관련 자료

  • 이전 PHP에서 변수에 문자열로 저장된 배열의 인덱스에 어떻게 액세스 할 수 있습니까?
  • 다음 r - 오류 - 첫 번째 인수는 데이터 프레임 또는 공유 데이터 여야합니다