그래서 두 개의 값을 비교할 때 최근에 wierd 버그가 발생했습니다.T-SQL ORDER BY는 " '-'+ ..."을 (를) 무시하지만 "+"+ ...를 사용하지 않습니다. "
내 값은 -1에서 2까지의 범위입니다. 때로는 -1이 0보다 크고 해결책은 간단하다고 생각하는 경우가 있습니다. 분명히 int 대신 varchar (50)로 설정된 열이 있습니다.
그러나 이것이 내가 왜 이런 일이 일어 났는지 생각하게했습니다. 왜냐하면 열이 varchar (50)로 설정 되었더라도 '-'는 '0'보다 낮은 char 값을 가져야합니다 ('-'의 charvalue는 45이고 '0'의 charvalue는 48이어야합니다).
몇 가지 테스트를 통해 알 수 있듯이 '-'는 ORDER BY가 신경 쓰지 않는 유일한 문자입니다.
예 :
SELECT
A.x
FROM
(
VALUES
('-5'), ('-4'), ('-3'), ('-2'), ('-1'),
('0'), ('1'), ('2'), ('3'), ('4'), ('5')
) A(x)
ORDER BY
A.x;
SELECT
B.x
FROM
(
VALUES
('+5'), ('+4'), ('+3'), ('+2'), ('+1'),
('0'), ('1'), ('2'), ('3'), ('4'), ('5')
) B(x)
ORDER BY
B.x
결과 :
Result of A
0
1
-1
2
-2
3
-3
4
-4
5
-5
Result of B
+1
+2
+3
+4
+5
0
1
2
3
4
5
가
의해 '+'순서 (+ 43 charvalue 있음) 오른쪽 느낌하지만은 '-'보인다 .. 잘못된 것
왜 이런 식으로 아는 사람이 있습니까?
추가 정보를 원하시면
Server 버전 : 12.0.4213
정렬 : Finnish_Swedish_CI_AS
결과를 왜곡 할 수 밖에 무슨 단서
. 더 많은 정보가 필요한지 물어보십시오.
용서 나의 무지하지만, 기능'(x)는'A (X)'와'B는 무엇인가? –
정상/예상 결과가 나타납니다. – Paparazzi
A와 B는 생성 된 테이블의 이름이고 x는 생성 된 테이블의 단일 열 이름입니다. 내가 더 분명하게 만들 수 있었어, 미안 : P –