2013-01-19 2 views
1

SQL Server에서 열의 데이터 형식을 변환하려고합니다. 큰 정수 두 값을 삽입하면 예상되는 결과를 얻지 못합니다. 그것은 산술 오버 플로우 기록이 커밋되지 않았다고 말한다. 나는 그것을 위해 다음과 같은 코드를 가지고있다.계산 된 열의 데이터 형식을 변환하는 방법

CREATE TABLE mytable(
    firstcol [int] NULL, 
    secondcol [int] NULL, 
    computedcol AS (firstcol * secondcol) 

하지만 추가하거나 지원 승산 같은 10 개 자리의 연산을 입력하지만 123456789 * 123,456,789 할 경우는 산수 오버 플로우 에러를 도시하고, 기록이 커밋 될 couldnot 때. 아마도 계산 된 데이터 유형이 int이고 SQL 서버의 int 데이터 유형이 초과 된 경우 오버플로 오류 bigint 데이터 유형이 그러한 계산을 시도하는 희망이지만 최대 코드가 필요하다는 것을 알지 못한다는 것을 나타내는 경우 최대 10 자리입니다.

+0

데이터 유형을 직접 지정 하시겠습니까? 하지만 왜'int'를 사용하지 않습니까? 한계가 exeeeds 거기에 오버플로있을 것입니다 ... 그건 당신이 그것에 대해 갈 수 없어 ... – bonCodigo

+1

두 10 자리 숫자를 곱하면 또한 bigint의 최대 값을 초과 할 수 있습니다 '9223372036854775807' – nunespascal

답변

1

당신은 확실히를 쿼리에 응답 할 것이다이 링크를 확인하실 수 있습니다 : - http://blog.sqlauthority.com/2008/09/29/sql-server-puzzle-solution-computed-columns-datatype-explanation/ 운영자가 다른 데이터 유형의 두 식을 결합

, 데이터 형식 우선 순위에 대한 규칙은 지정 그와 데이터 유형 낮은 우선 순위는 높은 우선 순위를 가진 데이터 유형으로 변환됩니다. 계산 된 열 정의의 데이터 유형 중 하나를 원하는 데이터 유형으로 변환 할 수 있으며 문제를 해결할 수 있습니다.

+0

고맙습니다 너무 형제 정말로 나를 도왔다. 그 모든 당신의 Hardwork 다시 한번 U 감사 ... !! :-) –

관련 문제