我有一個充滿關於某些服務器的信息的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函數?
我有一個充滿關於某些服務器的信息的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函數?
您可以通過執行解決您的具體問題:
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
。這樣,這些字符串將可以直接比較。
可能重複的[SQL數據類型存儲生成版本](http://stackoverflow.com/questions/3379283/sql-data-type-to-store-build-versions) – hjpotter92