2016-11-14 50 views
2

是否可以評估存儲在列中的字符串公式/表達式? (SQL Server 2014)。SQL評估存儲在數據庫中的公式

實施例:

TABLE: 
ID | Formula 
1 | IIF(2<3,'A','B') 
2 | IIF(3<4,'C','D') 
3 | IIF(5<1,'E','F') 

查詢:

SELECT ID, Eval(Formula) 

輸出:

1 | A 
2 | C 
3 | F 
+2

這也不是沒有可能的動態SQL,這也將會對每一行動態地執行,因爲公式是特定行。如果公式是列專用(計算列),那麼它有點容易,但仍然不理想或建議練習 – Matt

+3

而且,以....開頭是個壞主意。\ – scsimon

回答

0

使用動態SQL,但真的不推薦。萬一你真的有......

Declare @YourTable table (ID int,Formula varchar(100)) 
Insert Into @YourTable values 
(1,'IIF(2<3,''A'',''B'')'), 
(2,'IIF(3<4,''C'',''D'')'), 
(3,'IIF(5<1,''E'',''F'')') 

Declare @SQL varchar(max) = '>>>' 

Select @SQL = Replace(@SQL + concat(' Union All Select ID=',ID,',Value=',Formula),'>>> Union All','') 
From @YourTable 

Exec (@SQL) 

返回

ID Value 
1 A 
2 C 
3 F 
+0

謝謝約翰。我意識到這可能不是最好的方式,我對我正在構建的系統有一些相當複雜的要求。只是探索可能性。再次感謝你的反饋! – NateTheGreat

+0

@NateTheGreat瞭解。我過去做過這樣的事情,我唯一擔心的是無效的SQL。我也希望在SQL中看到一個EVAL()函數。 –