2

昨朝、マネージャーから新しいデータベースが提供され、SQLストアドプロシージャをいくつか作成する必要がありました。数値用の列MMがあったので、SQL関数MAXが機能することを理解しました。しかし、そうではありませんでした。

これは、1から41までランダムに格納された数値を保持するvarchar列でした。SQLステートメント「SELECTMAX(MMS)FROM tbl」は、結果として41を返すと想定していましたが、9になりました。

後で、文字列データ型で使用する場合にMAXを投資して、列から最初の数字を取得し、それらからMAXを取得します。

なぜそれが起こっているのか誰かが知っていますか?

4

1 に答える 1

4

ここから:

http://msdn.microsoft.com/en-uk/library/ms187751.aspx

文字列の場合、MAXは照合シーケンスで最大値を検出します。

列の内容を数値で並べ替える場合は、次のようにすることができます。

ORDER BY len(mms), mms
于 2012-07-18T07:25:42.270 に答える