programing

SQL Server 쿼리에서 정수를 10진수로 변환하는 방법은 무엇입니까?

skycolor 2023. 8. 10. 18:38
반응형

SQL Server 쿼리에서 정수를 10진수로 변환하는 방법은 무엇입니까?

A열heightSQL Server 테이블의 정수 유형입니다.나는 나눗셈을 하고 그 결과를 내 쿼리에 소수로 표시하고 싶습니다.

Select (height/10) as HeightDecimal

어떻게 캐스팅을 해야 하나요?HeightDecimal더 이상 정수가 아닌가요?감사해요.

SELECT height/10.0 AS HeightDecimal FROM dbo.whatever;

특정 정밀도 척도를 원하는 경우 다음과 같이 말합니다.

SELECT CONVERT(DECIMAL(16,4), height/10.0) AS HeightDecimal
  FROM dbo.whatever;
SELECT CAST(height AS DECIMAL(18,0)) / 10

편집: 후드 아래에서 어떻게 작동합니까?

결과 유형은 두 인수의 유형과 동일하거나, 서로 다른 경우 데이터 유형 우선 순위 테이블에 의해 결정됩니다.따라서 당신은 어떤 주장을 비본질적인 것에 던질 수 있습니다.

지금이다DECIMAL(18,0)아니면 동등하게 그냥 쓸 수도 있습니다.DECIMAL그 기본 척도는 여전히 정수 유형의 일종입니다.0는 "소수점 오른쪽에 숫자가 없음"을 의미합니다.따라서 다른 상황에서 그것에 대한 캐스팅은 우리가 달성하려고 하는 것과 반대인 정수로 반올림하는 데 잘 작동할 수 있습니다.

하지만, DECTION은 모든 것에 대한 그들만의 규칙을 가지고 있습니다.이들은 일반적으로 정수가 아니지만 항상 정확한 숫자입니다.우리가 강제로 발생시킨 DECTIMAL 나눗셈의 결과 유형은 특히 우리의 경우 DECTIMAL(29,11)로 결정됩니다.따라서 나눗셈의 결과는 10으로 나눗셈과 관련이 없는 11개 위치로 반올림되지만, 3으로 나눗셈할 때 반올림이 관찰됩니다.왼쪽 피연산자의 눈금을 조작하여 반올림 양을 제어할 수 있습니다.전체 식 주위에 다른 ROUUND 또는 CAST 연산을 배치하여 더 많이 반올림할 수도 있지만 더 적게 반올림할 수는 없습니다.

동일한 역학이 허용된 답에서 더 간단하고 더 나은 솔루션을 지배합니다.

  SELECT height / 10.0

이 경우, 지수의 유형은 다음과 같습니다.DECIMAL(3,1)그리고 그 결과의 유형은.DECIMAL(17,6)3으로 나누어 반올림의 차이를 관찰합니다.

정밀도와 척도에 대한 이러한 모든 논의를 싫어하고 SQL Server가 언제부터라도 이전의 이중 정밀 부동 소수점 산술에서 모든 계산을 수행하기를 원한다면 다음과 같이 강제할 수 있습니다.

SELECT height / CAST(10 AS FLOAT(53))

또는 동등하게 그냥.

SELECT height / CAST (10 AS FLOAT)

높이를 소수점으로 캐스팅할 수 있습니다.

select cast(@height as decimal(10, 5))/10 as heightdecimal

또는 다음을 기준으로 나누는 값에 소수점을 배치합니다.

declare @height int
set @height = 1023

select @height/10.0 as heightdecimal

예제를 사용하여 sqlfidle 보기

select cast (height as decimal)/10 as HeightDecimal
declare @xx int 
set     @xx = 3 
select @xx      
select @xx * 2  -- yields another integer  
select @xx/1    -- same
select @xx/1.0  --yields 6 decimal places 
select @xx/1.00 --       6 
select @xx * 1.0  --     1 decimal place - victory
select @xx * 1.00 --     2         places - hooray 

또한 temp_table에 10진수(10,3)와 같은 int를 삽입하는 것도 좋습니다.

언급URL : https://stackoverflow.com/questions/10271548/how-to-convert-integer-to-decimal-in-sql-server-query

반응형