2

どの種類のソフトウェアが、どのバージョンのソフトウェアが各企業にライセンスされているかを追跡するためのシステムを作成しています。一部のソフトウェアには、1.1.4 などのバージョン番号があり、小数点が複数あります。

小数点以下を 1 つ以上取る数値データ型が見つからなかったため、とりあえず varchar として保存してみました。そして、それを varchar として保存することは問題ありませんが、>= 1.1.2 または <= 2.5.1 を検索できるようにする必要があり、そうするとシステムがクラッシュします。>= 1.2 を検索すると、たとえば 2.5.1 という結果が得られますが、正確さのためにその最後の数値も検索できるようにしたいと考えています。

私が見逃しているデータ型はありますか (私はこれにまったく慣れていません)、それを解決する簡単な方法はありますか?

4

3 に答える 3

4

( の) リビジョンとパッチの値が最大 2 桁であると仮定すると、次のように (またはより小さい) 列にversion.revision.patchそれらを格納できます。INT UNSIGNED

version * 10000 + revision * 100 + patch

このアプローチでは、検索は になり>= 10102 or <= 20501ます。

于 2013-05-29T15:08:41.530 に答える
1

複数の小数点は一般的なデータ型ではないため、ネイティブではありません。

あなたの最善の策はvarchar、あなたが行ったようにそれを保存し、アプリコードで数を分割し、手動で比較することです.

于 2013-05-29T15:08:31.433 に答える
0

あなたの唯一の選択肢は

1) バージョン コンポーネントに 3 つの個別の整数フィールドを使用しますが、これによりクエリが少し複雑になります。

2) たとえば、xxxyyyzzz の形式に変換された文字列として保存します。つまり、2.5.1 は文字列 "002005001" になります。これにより、クエリが簡単になります。

于 2013-05-29T15:06:09.510 に答える