列に格納されている文字列式/式を評価することはできますか? (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)
出力:動的SQLを使用した
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)
出力:動的SQLを使用した
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は理解しています。私は過去にこのようなことをしてきましたが、唯一の懸案事項はInvalid SQLです。私もSQLでEVAL()関数を見たいと思っています。 –
を持っています。数式が列固有(計算列)の場合、それは少し簡単ですが、まだ理想的でないまたは提案された練習ではありません。 – Matt
...と始めるのは悪い考えです。\ – scsimon