すべてのエントリが算術式(つまり1+2+3
など)の形式であるテーブルがあります。
この表では、すべての列のタイプはvarchar
です。テーブルにはこのような列がたくさんあります。
数式を計算して、その値を別の数式に挿入したいと思います。これを達成する方法について何か提案はありますか?
すべてのエントリが算術式(つまり1+2+3
など)の形式であるテーブルがあります。
この表では、すべての列のタイプはvarchar
です。テーブルにはこのような列がたくさんあります。
数式を計算して、その値を別の数式に挿入したいと思います。これを達成する方法について何か提案はありますか?
これを試すことができます。これがお役に立てば幸いです。t1 から式を取得し、結果を t2 に入れます。テーブルから削除するときに t1 を実際のテーブルにしたくないので、実際のテーブルの値を一時テーブルにコピーできます
declare @t as table(val varchar(20))
declare @t2 as table(val varchar(20))
insert into @t values
('1+3'),
('2*3'),
('9+3*2')
declare @exp varchar(20)
while(exists(select 1 from @t))
begin
select top(1) @exp = val from @t
insert into @t2
exec ('select '+@exp)
delete top (1) from @t
end
select * from @t2
結果
val
------
4
6
15
これらのリンクを確認できます同様の質問はこちらおよび文字列を式で10進数に変換する
リンクをたどる - 式を含む文字列を 10 進数に変換する
関数 DBO.EVAL を作成したら、実行するだけです:-
select dbo.eval(column_name) from table_name;