したがって、最近2つの値を比較するときにwierdバグが発生しました。T-SQL ORDER BYは "' - ' + ..."を無視しますが、 "'+' + ..."を無視します。
私の値は-1から2の範囲でした。 時々、-1が0より大きいと考えられましたが、解決は簡単でした。どうやらintの代わりにvarchar(50)に設定された列がありました。
しかし、これが原因で私はこのことが起こったと思いました。カラムがvarchar(50)に設定されていても、 ' - 'の値は '0'より小さい(charvalueは ' - 'は45、charvalueは '0'は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)は'(x)の ''とBは何ですか? –
正常/予期した結果が得られます – Paparazzi
AとBは作成された表の名前にすぎず、xは作成された表の単一列の名前です。私はそれをより明確にすることができた、申し訳ありません:P –