CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

关于算数运算表达式问题!

楼主yuzhiyong(yuzhiyong)2006-03-17 16:04:43 在 MS-SQL Server / 基础类 提问

表:  
  A:   varchar(50)  
   
  A                            
  ------------------  
  1/2  
  (1+3)*4  
   
  怎样得到  
  A                   B  
  --------------  
  1/2               0.5  
  (1+3)*4       16  
   
  B也就是A算数运算表达式的结果. 问题点数:20、回复次数:5Top

1 楼yuzhiyong(yuzhiyong)回复于 2006-03-17 16:50:07 得分 0

顶一下Top

2 楼huailairen(流浪猫--很想养只猫,带着它到处流浪。)回复于 2006-03-17 22:29:36 得分 5

create   table   A(lie   varchar(50))  
  insert   into   A   values('1+4')  
  insert   into   A   values('5*5+1')  
   
  create   proc   compute_all  
  as  
  begin  
   
  declare   @tb   table(   a   varchar(50),   b   int)  
  declare   @m   float  
  declare   @v   varchar(50)  
  declare   @sql   Nvarchar(60)  
  declare   cr   cursor    
  for   select   lie   from   A    
  open   cr  
  fetch   next   from   cr   into   @v  
  while   @@fetch_status=0    
  begin set   @sql='select   @m=('+@v+')'  
  exec   sp_executesql   @sql,N'@m   float   output',@m   output  
  insert   into   @tb   values(@v,@m)  
  --print   cast(@m   as   varchar(50))  
  --print   @v  
  fetch   next   from   cr   into   @v  
  end  
  close   cr  
  deallocate   cr  
   
  select   *   from   @tb  
   
  end  
   
  exec   compute_all  
   
  (所影响的行数为   1   行)  
   
  a                                                                                                     b                        
  --------------------------------------------------   -----------    
  1+4                                                                                                 5  
  5*5+1                                                                                             26  
  Top

3 楼huailairen(流浪猫--很想养只猫,带着它到处流浪。)回复于 2006-03-17 22:29:51 得分 0

这样应该可以了。Top

4 楼ReViSion(和尚)回复于 2006-03-17 23:01:37 得分 15

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_calc]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))  
  drop   function   [dbo].[f_calc]  
  GO  
   
  /*--计算表达式的函数  
   
  计算给定算术表达式的值  
   
  此方法由VB版   hhjjhjhj(大头)    
  提供的VB处理程序程序上改造而来  
   
  --邹建   2004.07(引用请注明此信息)--*/  
   
  /*--调用示例  
   
  select   dbo.f_calc('123+456')  
  --*/  
  create   function   f_calc(  
  @str   varchar(1000) --要计算的表达式  
  )returns   sql_variant  
  as  
  begin  
  declare   @re   sql_variant  
   
  declare   @err   int,@src   varchar(255),@desc   varchar(255)  
  declare   @obj   int  
   
  exec   @err=sp_oacreate   'MSScriptControl.ScriptControl',@obj   out  
  if   @err<>0   goto   lb_err  
   
  exec   @err=sp_oasetproperty   @obj,'Language','vbscript'  
  if   @err<>0   goto   lb_err  
   
  exec   @err=sp_oamethod   @obj,'Eval',@re   out,@str  
  if   @err=0   return(@re)  
   
  lb_err:  
  exec   sp_oageterrorinfo   NULL,   @src   out,   @desc   out    
  declare   @errb   varbinary(4),@s   varchar(20)  
  set   @errb=cast(@err   as   varbinary(4))  
  exec   master..xp_varbintohexstr   @errb,@s   out  
  return('错误号:   '+@s+char(13)+'错误源:   '+@src+char(13)+'错误描述:   '+@desc)  
  end  
  goTop

5 楼ReViSion(和尚)回复于 2006-03-17 23:11:39 得分 0

最好以sa登录,要不然有可能出现权限问题Top

相关问题

  • 请问有没有解析并运算数学表达式的开源库
  • 条件表达式中的自增运算符的问题
  • 关于取正负号运算的表达式问题.
  • 如何运算字符串里的表达式呢?
  • C# 含运算符的表达式比较 请高手指点!
  • 这个正则表达式怎么写?(四则运算式)
  • Delphi里有没有像C 里的<表达式1>?<表达式2>:<表达式3>这样的三目运算呀?
  • 关于使用ComObj计算数学表达式的问题[悬赏100分]
  • 计算数学表达式在线急等,请各位帮帮忙!!!
  • 100分向送,急需帮助--字符串转成运算表达式!!!

关键词

  • sql
  • 表达式
  • err
  • errb
  • calc
  • varchar
  • dbo
  • 错误
  • cr
  • lb

得分解答快速导航

  • 帖主:yuzhiyong
  • huailairen
  • ReViSion

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo