nvarchar 값 '$ 28,926.25'를 데이터 형식 int로 변환 할 때 변환에 실패했습니다.

프랭크 레이놀즈
USE AdventureWorks2014

SELECT 
    result.BusinessEntityID, 
    p.FirstName, p.LastName, 
    result.TotalSales, '2011' AS SalesYear, 
    CASE 
        WHEN CAST(result.TotalSales AS int) > 1000000 THEN 'MillionPlus'
        WHEN CAST(result.TotalSales AS int) < 100000 THEN 'Warning'
        ELSE 'Met Expectations'
    END AS BonusCategory
FROM 
    person.Person AS P, 
    (SELECT sp.BusinessEntityID, FORMAT(sum(soh.SubTotal), 'c', 'en-us') AS TotalSales 
     FROM sales.SalesPerson as sp 
     RIGHT JOIN sales.SalesOrderHeader as SOH ON sp.BusinessEntityID = soh.SalesPersonID
     WHERE soh.orderdate LIKE '%2011%'
     GROUP BY sp.BusinessEntityID) AS result 
WHERE 
    result.BusinessEntityID = p.BusinessEntityID 
    OR result.TotalSales IS NULL
ORDER BY 
    result.BusinessEntityID 

전체 오류 메시지


nvarchar 값 '$ 28,926.25'를 데이터 형식 int로 변환 할 때 Msg 245, 수준 16, 상태 1, 줄 2 변환에 실패했습니다.

조엘 코 호른

거의 모든 플랫폼에서 프로그래밍 할 때와 같은 숫자 값 123.45과 문자열 또는 텍스트 값 사이에서 변환 할 때 이해해야 할 "123.45"것은 놀랍도록 느리고 비용이 많이 드는 작업입니다. 똑같아 보이지만 가치다르며 국제화 / 문화적 문제로 인해 이들 간의 전환은 사소하지 않습니다. 항상 이러한 전환을 최소화하도록 노력하고 필요한 경우 가능한 마지막 순간까지 그대로 두십시오.

SQL Server도 예외는 아닙니다. 숫자와 텍스트를 혼합하는 것은 매우 까다로울 수 있습니다.

이 질문의 경우 중첩 된 내부 쿼리는 숫자sum(soh.SubTotal)표현식을 가져 와서 텍스트 필드 를 생성하는 함수 호출로 래핑 합니다. 나중에 결과를 다시 숫자 인 것처럼 외부 쿼리에 사용하려고 합니다.FORMAT()

하지마!

SELECT가능한 마지막 순간에 외부 문의 절 까지 결과 형식을 지정합니다 . 이를 통해 표현식 CAST()내부에서 s를 CASE완전히 제거 할 수 있습니다 .

또한 이전 조인 구문을 사용하지 마십시오A,B WHERE . 지금은 25 년 넘게 구식입니다.

USE AdventureWorks2014
SELECT result.BusinessEntityID, p.FirstName, p.LastName, 
    FORMAT(result.TotalSales,'c','en-us') As TotalSales, '2011' as SalesYear, 
    CASE 
        WHEN result.TotalSales > 1000000 THEN 'MillionPlus'
        WHEN result.TotalSales < 100000 THEN 'Warning'
        ELSE 'Met Expectations'
    END as BonusCategory
FROM person.Person as P
INNER JOIN (
       SELECT sp.BusinessEntityID, FORMAT(sum(soh.SubTotal),'c','en-us') as TotalSales 
       FROM sales.SalesPerson as sp 
       RIGHT JOIN sales.SalesOrderHeader as SOH 
            ON sp.BusinessEntityID = soh.SalesPersonID
       WHERE soh.orderdate LIKE '%2011%'
       GROUP BY sp.BusinessEntityID
    ) result ON (result.BusinessEntityID = p.BusinessEntityID OR result.TotalSales is null)
ORDER BY result.BusinessEntityID 

더 좋은 점 은 SELECT 절에서 문자열 / 텍스트로 변환하지 않는 것입니다! 클라이언트 프로그램이나보고 도구가이 부분을 처리하도록하십시오. 이것은 우리가 첫 단락의 "가능한 마지막 순간으로 전환을 남겨 두십시오"지침을 따를 수있는 또 다른 방법입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

nopcommerce 4.3에서 nvarchar 값 'abc'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

nvarchar 값 'Landmark Acq vPay'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

nvarchar 값을 int 데이터 형식으로 변환 할 때 변환에 실패했습니다.

분류에서Dev

nvarchar 값 '6,7'을 데이터 형식 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

SQL Server 변환 오류 : nvarchar 값 'XXX'를 데이터 형식 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

nvarchar 값 'EnumValue'를 데이터 형식 int로 변환 할 때 Entity Framework Core 3.1 Enum 변환이 실패했습니다.

분류에서Dev

"nvarchar 값 '113332,113347'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다."

분류에서Dev

varchar 값 '6276.54'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'U'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

"varchar 값 'ABC'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다."

분류에서Dev

varchar 값 '@id'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'FOT'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'BUE'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 '80 -4 '를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 '@uye_yasi'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'xxx'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

SQL Server에서 varchar 값을 int 데이터 형식으로 변환 할 때 변환에 실패했습니다.

분류에서Dev

CASE 문에서 "nvarchar 값을 데이터 형식 int로 변환 할 때 변환 실패"

분류에서Dev

저장 프로 시저 SQL Server에서 varchar 값 'Blue color'를 데이터 형식 int로 변환 할 때 변환이 실패했습니다.

분류에서Dev

라 라벨이 "nvarchar 값 '[]'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다."라고 말하는 이유

분류에서Dev

nvarchar 값 '7575932'를 변환하는 동안 변환에 실패했습니다. 데이터 유형 int

분류에서Dev

Varchar 값 'NOTDEFINED'를 데이터 형식 Int로 변환 할 때 변환 실패

분류에서Dev

varchar 값 '_1'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 '[]'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

carchar 값 '{0}'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'none'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 '29 / 09 / 2016 '을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

varchar 값 'is_special_taken'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

분류에서Dev

이 오류를 해결하는 방법 : nvarchar 값 '문자열 또는 이진 데이터가 잘립니다.'를 변환 할 때 변환에 실패했습니다. 데이터 유형 int

Related 관련 기사

  1. 1

    nopcommerce 4.3에서 nvarchar 값 'abc'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  2. 2

    nvarchar 값 'Landmark Acq vPay'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  3. 3

    nvarchar 값을 int 데이터 형식으로 변환 할 때 변환에 실패했습니다.

  4. 4

    nvarchar 값 '6,7'을 데이터 형식 int로 변환 할 때 변환에 실패했습니다.

  5. 5

    SQL Server 변환 오류 : nvarchar 값 'XXX'를 데이터 형식 int로 변환 할 때 변환에 실패했습니다.

  6. 6

    nvarchar 값 'EnumValue'를 데이터 형식 int로 변환 할 때 Entity Framework Core 3.1 Enum 변환이 실패했습니다.

  7. 7

    "nvarchar 값 '113332,113347'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다."

  8. 8

    varchar 값 '6276.54'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  9. 9

    varchar 값 'U'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  10. 10

    "varchar 값 'ABC'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다."

  11. 11

    varchar 값 '@id'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  12. 12

    varchar 값 'FOT'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  13. 13

    varchar 값 'BUE'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  14. 14

    varchar 값 '80 -4 '를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  15. 15

    varchar 값 '@uye_yasi'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  16. 16

    varchar 값 'xxx'를 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  17. 17

    SQL Server에서 varchar 값을 int 데이터 형식으로 변환 할 때 변환에 실패했습니다.

  18. 18

    CASE 문에서 "nvarchar 값을 데이터 형식 int로 변환 할 때 변환 실패"

  19. 19

    저장 프로 시저 SQL Server에서 varchar 값 'Blue color'를 데이터 형식 int로 변환 할 때 변환이 실패했습니다.

  20. 20

    라 라벨이 "nvarchar 값 '[]'을 데이터 유형 int로 변환 할 때 변환이 실패했습니다."라고 말하는 이유

  21. 21

    nvarchar 값 '7575932'를 변환하는 동안 변환에 실패했습니다. 데이터 유형 int

  22. 22

    Varchar 값 'NOTDEFINED'를 데이터 형식 Int로 변환 할 때 변환 실패

  23. 23

    varchar 값 '_1'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  24. 24

    varchar 값 '[]'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  25. 25

    carchar 값 '{0}'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  26. 26

    varchar 값 'none'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  27. 27

    varchar 값 '29 / 09 / 2016 '을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  28. 28

    varchar 값 'is_special_taken'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다.

  29. 29

    이 오류를 해결하는 방법 : nvarchar 값 '문자열 또는 이진 데이터가 잘립니다.'를 변환 할 때 변환에 실패했습니다. 데이터 유형 int

뜨겁다태그

보관