我想让sql计算表达式的值,如
update 表名 set 字段名='1*2*3'
想得到的结果是此字段的值为6,而不是1*2*3,上例中的1,2,3不是固定的,是程序传的参数

解决方案 »

  1.   


    declare @sql varchar(4000)
    declare @str varchar(100)
    set @str = '1*2*3'
    set @sql = 'update 表名 set 字段名=' + @str
    exec(@sql)
      

  2.   


    create table tb(id int)
    insert into tb
    select null
    godeclare @sql varchar(4000)
    declare @str varchar(100)
    set @str = '1*2*3'
    set @sql = 'update tb set id = ' + @str
    exec(@sql)select *
    from tbdrop table tb/*****************id
    -----------
    6(1 行受影响)
      

  3.   


    declare @sql varchar(4000)
    set @sql = 'update tb set id = '+ '1*2*3'
    exec(@sql)
      

  4.   

    厉害,动态执行,没搞过·高
    --reply by CSDN Study V1.0.0.3 (starts_2000)
      

  5.   


    declare @VInt1 int,@VInt2 int,@VInt3 int,@selectsql varchar(max),@updatesql varchar(max);
    select @VInt1=1,@VInt2=2,@VInt3=3;
    set @selectsql='select '+ltrim(@VInt1)+' * '+ltrim(@VInt2)+' * '+ltrim(@VInt3)+'';  --查询
    set @updatesql='update 表名 set 字段名= '+ltrim(@VInt1)+' * '+ltrim(@VInt2)+' * '+ltrim(@VInt3)+' ';
    --update 表名 set 字段名='1*2*3'
    print(@updatesql)