두 정수 값을 나누어 플로트 결과를 얻는 방법은 무엇입니까?
다음과 같이 두 정수 사이의 나누기를 할 때 소수 자릿수를 지정하고 싶습니다.
select 1/3
현재를 반환합니다 0
. 나는 그것을 반환하고 싶습니다 0,33
.
다음과 같은 것 :
select round(1/3, -2)
그러나 그것은 작동하지 않습니다. 원하는 결과를 얻으려면 어떻게해야합니까?
상수를 찾고 있다면 stb와 xiowl의 제안이 좋습니다. 정수인 기존 필드 또는 매개 변수를 사용해야하는 경우 먼저 부동 소수점으로 캐스트 할 수 있습니다.
SELECT CAST(1 AS float) / CAST(3 AS float)
또는
SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float)
SQL Server는 정수 나누기를 수행하기 때문입니다. 이 시도:
select 1 * 1.0 / 3
이것은 정수를 매개 변수로 전달할 때 유용합니다.
select x * 1.0 / y
둘 다 캐스팅 할 필요는 없습니다. 디비전의 결과 데이터 유형은 항상 데이터 유형 우선 순위 가 높은 유형 입니다. 따라서 솔루션은 다음과 같아야합니다.
SELECT CAST(1 AS float) / 3
또는
SELECT 1 / CAST(3 AS float)
사용하다
select 1/3.0
이것은 일을 할 것입니다.
조금 늦을 수도 있지만 MySQL에서 CAST
ing FLOAT
이 허용되지 않으며 MySQL dev에CAST(1 AS float)
명시된대로 시도하면 오류가 발생합니다 .
이에 대한 해결 방법은 간단합니다. 그냥 해
(1 + 0.0)
그런 다음 ROUND
과 같은 특정 소수점 이하 자릿수를 달성하는 데 사용하십시오.
ROUND((1+0.0)/(2+0.0), 3)
위의 SQL은 1을 2로 나누고 부동 소수점을 소수점 3 자리로 반환합니다 0.500
.
한 캔 CAST
: 다음과 같은 유형의 진수, 문자, 날짜, 날짜, 소수, JSON, NCHAR, 서명, 시간, 그리고 부호 .
이 트릭은 SQL Server에서 작동하고 더 짧습니다 (이전 답변을 기반으로 함)
SELECT 1.0*MyInt1/MyInt2
또는:
SELECT (1.0*MyInt1)/MyInt2
이것을 사용하십시오
select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result
여기이 SQL에서 먼저 float로 변환하거나 1.00을 곱하십시오. 출력은 float 숫자입니다. 여기서 소수점 이하 두 자리를 고려하십시오. 필요한 것을 선택할 수 있습니다.
integer value에 대한 솔루션을 찾기 위해 (나와 같이) 여기에왔다면 답은 다음과 같습니다.
CAST(9/2 AS UNSIGNED)
5를 반환
'IT' 카테고리의 다른 글
""를 사용하여 문자열을 초기화하는 방법은 무엇입니까? (0) | 2020.06.08 |
---|---|
열망하는 로딩이란 무엇입니까? (0) | 2020.06.08 |
Fragment와 함께 데이터 바인딩을 사용하는 방법 (0) | 2020.06.08 |
bash에서 현재 작업 디렉토리를 임시로 변경하여 명령을 실행하십시오. (0) | 2020.06.08 |
ASP.NET MVC 데이터 형식 속성을 사용하는 전자 메일 주소 유효성 검사 (0) | 2020.06.08 |