2014-02-24 26 views
0

我有一個充滿關於某些服務器的信息的MySQL表,其中包括它們正在運行的軟件的版本號。處理存儲在MySQL中的版本號

該軟件的版本編號有例如1.1.0.1,但也是1.12.0.1,1.12明顯高於1.1。

我試圖查詢運行版本號1.8和以下的服務器使用version_number < 1.9,但corse這是趕上版本1.10,1.11,1.12,等等。

我可以在我的代碼中很容易地解決這個問題,但我寧願只是拉回我需要的結果集。

有沒有我可以用來解決這個問題的MySQL函數?

+0

可能重複的[SQL數據類型存儲生成版本](http://stackoverflow.com/questions/3379283/sql-data-type-to-store-build-versions) – hjpotter92

回答

1

您可以通過執行解決您的具體問題:

where substring_index(version_number, '.', 1) < 1 or 
     (substring_index(version_number, '.', 1) = 1 and 
     substring_index(substring_index(version_number, '.', 2), '.', -1) + 0 < 9 
    ) 

基本上,這確實版本號的場逐場比較。

我建議你更新字段,使每個組件的前導零:0001.0001.0000.0001。這樣,這些字符串將可以直接比較。

+0

謝謝,我會試試這個。可悲的是我沒有訪問插入數據庫的腳本,只能訪問報告數據庫。 – Applehat

+0

完美工作。謝謝! – Applehat