请教一存储过程 字符拆分的问题
@express 为计算表达式中的数据
数据类型如下 A+B+C-E-F*D/F.....之类的数据 请问该如何取出各种符号中间的数据 谢谢
CREATE PROCEDURE dt_guestroom_income (@p1 char(2) output,@p2 datetime)
AS
declare @line_y char(3) --列号
declare @subj_name varchar(64)--科目名称
declare @today_income numeric --当天收入
declare @lastyear_today_income numeric --去年同日
declare @month_income numeric --本月收入
declare @year_income numeric --本年收入
declare @last_time numeric --去年同期
declare @growth_rate numeric --增长率
declare @express char(128) --计算表达式
declare @check char(1) --符号表达式
declare @i int--位置记数
--declare @pos int --符号位置
declare @subj_code varchar(16)
--从科目基础表中查出相应的科目行号,科目名称
delete from ht_test_table1
--从表ht_check_report_design中取科目名称和计算表达式
Declare Cur_tmp Cursor For
select subj_name,express
from ht_check_report_design
where code =@p1
open Cur_tmp
Fetch Next From Cur_tmp into @subj_name,@express
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Cur_tmp into @subj_name,@express
--判断是@express是否有+,-,*,/,h 等符号
--若为+号则
if ( CHARINDEX( '+ ', @express,1)> 0)
----做加法处理 发现+号 拆分前面和后面的数据
SET @i=1
WHILE @i <=LEN(@express)
BEGIN
if ( SUBSTRING (@express,@i,1) = '+ ')
--这里需要拆分标量@express 取出加号和前一个符号前的代码
SET @i=@i+1
END
--若为-号则
if(CHARINDEX( '- ',@express,1)> 0)
---做减法处理
--若为*号则
if(CHARINDEX( '* ',@express,1)> 0)
&