2012-02-09 105 views
2
Select table1.column1, table2.column1, calcuate(table1.column2) as result 
from table1, table2 
where table1.id = table2.fkid 

說table1.column2是一個varchar,值是 「= table1.column1 * table2.column1」。我希望我的查詢實際計算該公式而不是返回文本。思考?如何計算查詢返回的字段中的公式?

+2

你需要使用一些[動態SQL](http://www.sommarskog.se/dynamic_sql.html)至拉下來。 – 2012-02-09 14:08:21

+0

我不認爲這在T-SQL(或我知道的任何其他SQL方言)中是可能的。 – bfavaretto 2012-02-09 14:09:17

+1

我強烈建議您不要使用此方法。數據庫用於CRUD。任何其他應該在應用程序中執行。 – Oybek 2012-02-09 14:08:50

回答

2

據我所知,有沒有像JavaScript的SQL中的評價。如果你只有幾個公式,你可以在你的SQL中嘗試一個CASE開關。 但是總的來說,你可能應該重新考慮一下你的Architecure - SQL語句,如果你有變化,這些語句很難維護。 (你應該總是期望的變化......)

例子:

 
Select 
    a.column1, 
    b.column1, 
    CASE 
    WHEN b.column2 = 'Multiply' THEN a.column1 * b.column1 
    WHEN b.column2 = 'Divide' THEN a.column1/b.column1 
    ELSE 0 
    END 
from table1 a, table2 b 
where a.id = b.fkid 
相關問題