是否可以評估存儲在列中的字符串公式/表達式? (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
是否可以評估存儲在列中的字符串公式/表達式? (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
使用動態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
謝謝約翰。我意識到這可能不是最好的方式,我對我正在構建的系統有一些相當複雜的要求。只是探索可能性。再次感謝你的反饋! – NateTheGreat
@NateTheGreat瞭解。我過去做過這樣的事情,我唯一擔心的是無效的SQL。我也希望在SQL中看到一個EVAL()函數。 –
這也不是沒有可能的動態SQL,這也將會對每一行動態地執行,因爲公式是特定行。如果公式是列專用(計算列),那麼它有點容易,但仍然不理想或建議練習 – Matt
而且,以....開頭是個壞主意。\ – scsimon