[SQL] SQL Server의 이상한 작동 문제 : -100 / -100 * 10 = 0
SQLSQL Server의 이상한 작동 문제 : -100 / -100 * 10 = 0
텅스텐 고정자 :
과
Level Operators
1 ~ (Bitwise NOT)
2 * (Multiplication), / (Division), % (Modulus)
3 + (Positive), - (Negative), + (Addition), + (Concatenation), - (Subtraction), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)
BOL의 잘못인가, 아니면 내가 뭔가를 놓친 거지? 끄기 (예상) 우선 순위를 던지고있다 - 보인다.
해결법
-
==============================
1.우선 순위 테이블에 따르면, 이것은 예상 된 동작입니다. 높은 우선 순위 (및 / *)와 오퍼레이터는 낮은 우선 순위가 조작으로 평가된다 (단항 -). 그래서 이거:
우선 순위 테이블에 따르면, 이것은 예상 된 동작입니다. 높은 우선 순위 (및 / *)와 오퍼레이터는 낮은 우선 순위가 조작으로 평가된다 (단항 -). 그래서 이거:
-100 / -100 * 10
로 평가된다 :
-(100 / -(100 * 10))
참고이 동작은 단항 부정은 예를 들어, 곱셈과 나눗셈보다 더 높은 우선 순위를 가지고 있습니다 대부분의 프로그래밍 언어에서 다른 것을 VB, 자바 스크립트.
-
==============================
2.BOL은 올바른 것입니다. - 그래서, *보다 낮은 우선 순위가
BOL은 올바른 것입니다. - 그래서, *보다 낮은 우선 순위가
-A * B
로 해석됩니다
-(A * B)
/ 그리고 % (그리고 %는 거의 같은 화합물 표현에 사용되지 않음) : 곱셈 그것이 무엇인지되고, 일반적으로 동일한 우선 순위가 다른 두 이항 연산자에 혼합하는 경우를 제외하고,이 통지하지 않습니다. 그래서
C / -A * B
로 해석됩니다
C / -(A * B)
결과를 설명. 대부분의 다른 언어로, 단항 마이너스 * 및 / 있지만에서 T-SQL보다 더 높은 우선 순위를 가지고 있으며, 이것이 제대로 설명되어 있기 때문에 반 직관적이다.
(?) 좋은 방법은 그것을 설명하기 :
SELECT -1073741824 * 2
생성 산술 오버플 때문에 - (2 * 1073741824), 지능에 맞지 않는, 중간체로서 2147483648를 생성하지만
SELECT (-1073741824) * 2
예상되는 결과를 생성 -2147483648, 수행한다.
-
==============================
3.(부정적인) 세 번째 - (아마도 반 직관적)에 대한 우선 순위가있는 설명서의주의 사항.
(부정적인) 세 번째 - (아마도 반 직관적)에 대한 우선 순위가있는 설명서의주의 사항.
효과적으로 얻을 수 있도록 :
-(100/-(100*10)) = 0
당신이 변수로 배치하면 곱셈 이후에 발생에는 단항 연산이 없기 때문에 당신은 이런 일을 볼 수 없습니다.
그래서 여기에 A와 B는 (E가 전체 브라케팅을 갖는) C, D 반면, E는 당신이보고있는 결과를 보여, 동일
DECLARE @i1 int, @i2 int, @i3 int; SELECT @i1 = -100, @i2 = -100, @i3 = 10; SELECT @i1/@i2*@i3 [A], -100/(-100)*10 [B], -100/-100*10 [C], -100/-(100*10) [D], -(100/-(100*10)) [E]; A - 10 B - 10 C - 0 D - 0 E - 0
from https://stackoverflow.com/questions/54513450/a-strange-operation-problem-in-sql-server-100-10010-0 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의에서 '이 복사'중 중복 키를 무시하려면 (0) | 2020.07.22 |
---|---|
[SQL] 대 저장 프로 시저 견해 (0) | 2020.07.22 |
[SQL] 수 있도록 자바 스크립트 라이브러리 JSON 데이터에 대한 쿼리 SQL과 같은? [닫은] (0) | 2020.07.22 |
[SQL] 일반적으로, 데이터베이스의 모든 테이블에는 PK로 사용할 정체성 필드를해야합니까? (0) | 2020.07.22 |
[SQL] 테이블을 삭제할 수 없습니다 : 외부 키 제약이 실패 (0) | 2020.07.22 |