2016-10-28 93 views
-1

我想使用SELECT來選擇字符串的最終值(例如'3+4')。我想知道在MySQL中是否存在一個函數或一個方法。在MySQL中使用數學函數可以解釋和操作字符串嗎?

例子:

SELECT ('4+1*3') as VALUE; 

結果是:

VALUE 
7 
+0

您無法在查詢中將此字符串作爲字符串傳遞。 –

+0

這非常不是數據庫引擎的用途。您還將此問題標記爲PHP;我強烈建議在該表達式中進行任何評估,而不是在表達式首次到達數據庫之前進行評估。 – iainn

+0

你正在嘗試做什麼可能是可能的,但只是*錯*。有沒有這樣做的有效理由。在* PHP中進行PHP計算。 –

回答

0

可以分三個步驟做到這一點:

  1. 合併查詢合併成一個字符串
  2. 創建準備來自此字符串的聲明
  3. 執行該陳述

事情是這樣的:

SET @query = CONCAT('SELECT (', '4+1*3', ') AS VALUE'); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 

注意,這並不僅僅計算數學表達式。惡意用戶可能會在這裏插入幾乎任何東西到查詢中,因此您可以接受最嚴重的SQL注入攻擊,除非您仔細清理粘貼到查詢中的字符串以允許使用數學表達式。

請注意,我可以想到沒有應用程序,這種操作是有用的。我會說,如果你必須評估任意字符串,你可能會更好地在應用程序代碼中這樣做,而不是在數據庫中。