[SQL] SQL 서버, 분할 0을 반환
SQLSQL 서버, 분할 0을 반환
여기에 내가 예에서 사용하고 코드입니다 :
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2;
PRINT @weight
여기에 결과는 다음과 같습니다
47
638
0
나는 그것이 0 대신 0,073667712을의 반환 왜 알고 싶습니다
해결법
-
==============================
1.어느 선언 SET1 및 설정 2 대신 정수의 수레로 또는 계산의 일환으로 수레에 캐스팅 :
어느 선언 SET1 및 설정 2 대신 정수의 수레로 또는 계산의 일환으로 수레에 캐스팅 :
SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
-
==============================
2.당신이 부문에서만 정수를 사용하면 분할 정수를 얻을 것이다. 당신은 두 번이나 플로트 (하나 이상)를 사용하면 포인트 부문 (그리고 당신이 얻고 싶은 답을) 떠납니다.
당신이 부문에서만 정수를 사용하면 분할 정수를 얻을 것이다. 당신은 두 번이나 플로트 (하나 이상)를 사용하면 포인트 부문 (그리고 당신이 얻고 싶은 답을) 떠납니다.
당신이 할 수있는 그래서
다만 두 배로 정수 나누기의 결과를 캐스팅하지 : 소수점 뒤의 숫자가 이미 손실 있도록 부문은 이미 정수 나누기로 하였다.
-
==============================
3.그것은 정수이기 때문. 당신은 계산 등으로 소수점 숫자 또는 소수, 또는 주조 부동로 선언해야합니다.
그것은 정수이기 때문. 당신은 계산 등으로 소수점 숫자 또는 소수, 또는 주조 부동로 선언해야합니다.
-
==============================
4.1.0에 의해 분할 단순히 다중 바닥 (또는 여러 소수점은 당신이 원하는대로)
1.0에 의해 분할 단순히 다중 바닥 (또는 여러 소수점은 당신이 원하는대로)
PRINT @set1 PRINT @set2 SET @weight= @set1 / @set2 *1.00000; PRINT @weight
-
==============================
5.당신은 플로트 또는 진수 형식으로 선언하는 경우가 표시됩니다
당신은 플로트 또는 진수 형식으로 선언하는 경우가 표시됩니다
뿐
예컨대 :
declare @weight float; SET @weight= 47 / 638; PRINT @weight
출력 : 0
당신은 출력으로 원하는 경우
예컨대
declare @weight float; SET @weight= 47.000000000 / 638.000000000; PRINT @weight
-
==============================
6.결과는 부동해야하는 경우에도 정수 두 개의 정수 반환 SQL 서버에 직접 부문에서. 그것을 통해 얻을 아래 예제가있다 :
결과는 부동해야하는 경우에도 정수 두 개의 정수 반환 SQL 서버에 직접 부문에서. 그것을 통해 얻을 아래 예제가있다 :
--1-- declare @weird_number_float float set @weird_number_float=22/7 select @weird_number_float --2-- declare @weird_number_decimal decimal(18,10) set @weird_number_decimal=22/7 select @weird_number_decimal --3-- declare @weird_number_numeric numeric set @weird_number_numeric=22/7 select @weird_number_numeric --Right way declare @weird_number float set @weird_number=cast(22 as float)/cast(7 as float) select @weird_number
바로 지난 블록은 3,14285714285714를 반환합니다. 오른쪽 정확하게 정의 된 제 2 블록에도 불구하고 그 결과는 3.00000 될 것이다.
from https://stackoverflow.com/questions/1666407/sql-server-division-returns-zero by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 가장 빠른 방법은 SQL Server에서 VARCHAR에서 숫자가 아닌 문자를 제거합니다 (0) | 2020.03.28 |
---|---|
[SQL] 그것은 어떤 깊이로, 하나의 쿼리에서 MySQL은 트리 구조의 테이블을 쿼리 할 수 있습니까? (0) | 2020.03.28 |
[SQL] 행으로 전체 데이터베이스에 DataTable을 한 번에 대신 행입니까? (0) | 2020.03.28 |
[SQL] 더 정확 - 카운트 (열 이름) 대 (*) 계산? [복제] (0) | 2020.03.28 |
[SQL] 어떻게 특정 인덱스를 사용하는 포스트 그레스를 강요하는 걸까? (0) | 2020.03.28 |