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

Say table1.column2はvarcharであり、値は "= table1.column1 * table2.column1"です。テキストを返すのではなく、実際にその式を計算するクエリが必要です。思考?クエリによって返されたフィールド内の式をどのように計算できますか?

+2

あなたにいくつかの[ダイナミックSQL](http://www.sommarskog.se/dynamic_sql.html)を使用する必要がありますそれを取り除く。 –

+0

私はそれがT-SQL(または私が知っている他のSQL方言)では可能ではないと思います。 – bfavaretto

+1

このメソッドを使用することを強くお勧めします。データベースはCRUD用です。他のものはすべてアプリケーションで実行する必要があります。 – Oybek

答えて

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 
0

MSSQLにはEXECコマンドがありますが、MySQLではこれがありません。 あなたは、2つのオプションがあります:http://forums.mysql.com/read.php?98,152150,152161#msg-152161

  • を、その後、ストアドプロシージャを作成します
  • (私はセキュリティ/ SQLインジェクションに関する警告を上げることができる)動的にクエリを構築し、あなたの式を抽出最初のクエリを作成します。
関連する問題