MSSQL 에서 MODULAR 연산에 해당하는 함수는 따로 없고(MOD,FMOD) % 연산자로 수행 합니다.
이때 해당 연산은 FLOAT에 대해서는 수행할 수 없도록 막혀 있습니다.
(https://docs.microsoft.com/en-us/sql/t-sql/language-elements/modulo-transact-sql?view=sql-server-ver16)
"The data types float and numeric are incompatible in the modulo operator."
위와 같은 메시지가 나오죠.
이를 해결 하기 위해서는 약간의 트릭이 필요합니다.
MONEY와 REAL 타입을 사용하면 원하는 연산의 수행이 가능합니다.
아래 연산을 수행해 보세요.
(분자값을 MONEY로 설정하고 결과값을 REAL에 저장해보세요.)
성공입니다.
DECLARE
@rem real,
@number money = 765.5
SET @rem = @number % 4
(출처: https://sqlserverguides.com/sql-operand-data-type-float-is-invalid-for-modulo-operator/)
There is no function corresponding to the MODULAR operation in MSSQL(ex.mod,fmod), and it is performed with the % operator. At this time, the operation is blocked so that it cannot be performed for FLOAT.
A message like the one below appears.
"The data types float and numeric are incompatible in the modulo operator."
A little trick is needed to solve this.
If you use the MONEY and REAL types, you can see what you want.
Try the operation below.
(Set the nummerator value to MONEY and set the result in REAL )
DECLARE @ANGLE FLOAT, @dTempAngle money, @rem real
SET @ANGLE = 292.60000000000002
SET @dTempAngle = @ANGLE + @dDiffAngle
SET @rem = @dTempAngle % 360
select @rem
'프로그래밍 > TSQL' 카테고리의 다른 글
[MSSQL] bcp 중에 QUOTED_IDENTIFIER 관련 오류 발생 해결 방법 (0) | 2022.08.11 |
---|---|
[MSSQL] 링크드서버(원격서버) DB인스턴스, 테이블 존재 유무 판단 (0) | 2022.08.09 |
[MSSQL]운영체제 오류 5 (엑세스라 거부되었습니다.) restore fail (0) | 2022.05.27 |
[MSSQL]서비스 재시작(w.에이전트 재시작) (0) | 2022.05.11 |
[MSSQL]나만 빼고 다나가 세션 정리! (0) | 2022.05.10 |
댓글