2016-09-21 64 views
1

如何在MySQL中編寫IF ... THEN ... ELSE我的IF正在測試服務器版本號?指向文檔的正確部分表示讚賞。更多細節非常感謝。MySQL IF版本<x然後我的

更新:

道歉非故意模糊的問題。

當我在機器上部署某些東西(對我而言是新的)時,我保持一個sql腳本可以輕鬆創建數據庫和用戶。不同的服務器運行不同版本的軟件,我希望使腳本可靠並具有版本意識。

+2

使用您的編碼鉛筆? – Mick

+1

這是什麼意思?你正在使用什麼版本,你想解決什麼問題?將這個烘烤成查詢是一個超級糟糕的主意。 – tadman

回答

1

這很難,因爲你沒有描述你要怎樣做才能回答這個問題,但你可能想知道關於MySQL SQL註釋語法的一個簡潔功能,以使查詢的某些部分與版本相關。

http://dev.mysql.com/doc/refman/5.7/en/comments.html

如果你的「!」字符後增加一個版本號, 內僅當MySQL版本大於或 等於指定版本號的註釋執行語法。 下面的註釋中的TEMPORARY關鍵字僅由來自MySQL 3.23.02或 更高的服務器執行:

CREATE/*!32302 TEMPORARY */TABLE t(a INT);

0

您需要使用version全局變量。

mysql> select @@VERSION; 
+-----------------+ 
| @@VERSION  | 
+-----------------+ 
| 5.6.26-74.0-log | 
+-----------------+ 
1 row in set (0.00 sec) 
0
  • 使用的版本()函數或@@ VERSION變量來得到當前 MySQL版本。
  • 使用IF(condition,value_if_true,value_if_false) 函數進行基本測試。
  • 結合使用string functions(如SUBSTRING, VERSION和LOCATE)來提取部分版本字符串。

EJ:(市長版本號,從'5.6.26-74.0-log'提取物'5'

SELECT SUBSTRING(@@VERSION , 1 , LOCATE('.' , @@VERSION))