if ltrim(rtrim(@chrwhere))<>''
   begin
        set @a1=charindex('code'>=,@chrwhere)+5 
set @a2=charindex('code'<=,@chrwhere)+5
set @b1=charindex('cquantity'>=,@chrwhere)+6
set @b2=charindex('cquantity'<=,@chrwhere)+6
set @c1=charindex('xquantity'>=,@chrwhere)+5
set @c2=charindex('xquantity'<=.@chrwhere)+5
set @d1=charindex('cmoney'>=,@chewhere)+6
set @d2=charindex('cmoney'<=,@chrwhere)+6
set @e1=charindex('xmoney'>=,@chrwhere)+5
set @e2=charindex('xmoney'<=,@chrwhere)+5        if @a1>5 set @scode=substring(@chrwhere,@a1,charindex('''',@chrwhere,@a1)-@a1)
if @a2>5 set @ecode=substring(@chrwhere,@a2,charindex('''',@chrwhere,@a2)-@a2)
        if @b1>6 set @scquantity=substring(@chrwhere,@b1,charindex('''',@chrwhere,@b1)-@b1)
if @b2>6 set @ecquantity=substring(@chrwhere,@b2,charindex('''',@chrwhere,@b2)-@b2)
        if @c1>5 set @sxquantity=substring(@chrwhere,@c1,charindex('''',@chrwhere,@c1)-@c1)
if @c2>5 set @exquantity=substring(@chrwhere,@c2,charindex('''',@chrwhere,@c2)-@c2)
        if @d1>6 set @scmoney=substring(@chrwhere,@d1,charindex('''',@chrwhere,@d1)-@d1)
if @d2>6 set @ecmoney=substring(@chrwhere,@d2,charindex('''',@chrwhere,@d2)-@d2)
        if @e1>5 set @sxmoney=substring(@chrwhere,@e1,charindex('''',@chrwhere,@e1)-@e1)
if @e2>5 set @exmoney=substring(@chrwhere,@e2,charindex('''',@chrwhere,@e2)-@e2)
   End
这段代码是原代码中的一段,打个比方,比如:
set @a1=charindex('code'>=,@chrwhere)+5 
这段代码中,最后的+5代表着什么意思?能否打个比方或者举个比较好理解的例子呢?还有就是下面if后面的语句我就有点懵了,因为不理解+5是说返回的数值加上5还是怎么的。所以才请各位帮忙举个比较形象点得例子,先谢谢啦~PS:如果各位需要的话我可以把原代码发上来。

解决方案 »

  1.   

    话说set @a1=charindex('code'>=,@chrwhere)+5 
    我没看懂那个>=干嘛的。,,
      

  2.   


    declare @chrwhere varchar(100)='1234code 56''789';
    declare @a1 int,@a2 int;if ltrim(rtrim(@chrwhere))<>''
    begin
        set @a1=charindex('code',@chrwhere)+5 
        set @a2=charindex('cquantity',@chrwhere)+6
        select @a1,@a2;
        if @a1>5  
    select substring(@chrwhere,@a1,charindex('''',@chrwhere,@a1)-@a1)
    end--这个运行一下。这个是表示取code后面 到引号的那个字符串,我觉得有可能是取别名的感觉,但是那个引号做为分段还是想不清楚的。
      

  3.   

    charindex('code'>=,@chrwhere)+5  charindex得到的是一个长度值
    那个大于等于符号是做什么的还真不知道
      

  4.   

    我打个比方吧,@a1是一个过滤条件,前面我有声明一个变量是@scode是开始存货编码,一个变量@ecode是结束存货编码,也就是说@a1的值赋给@scode,简单说就是@chrwhere是一个1——100之间的数据,然后我们在@a1赋予一个10,也就是说我们要查询10——20之间的数据,这时候set @a1=charindex('code'>=,@chrwhere)+5 
    这段代码就是说返回大于10的数据,而下面的set @a1=charindex('code'<=,@chrwhere)+5 
    就是说返回小于20的数据,就是这么个意思。
      

  5.   


    这个是原代码
    if exists (select name from sysobjects where name='sa_idp') drop procedure sa_idpcreate procedure sa_idp
    @chrwhere varchar(2000)
    AS 
    declare @scode varchar(20),@ecode varchar(20), -------------------------存货编码
            @scquantity float,@ecquantity float,-----------------采购数量
            @sxquantity float,@exquantity float,-----------------销售数量
    @scmoney money,@ecmoney money,-----------------------采购金额
    @sxmoney money,@exmoney money,-----------------------销售金额
    @cname varchar(30),-----------------------------------存货名称
    @a1 int,@a2 int,@b2 int,@b2 int,@c3 int,@c3 int,@d1 int,@d2 int,@e1 int,@e2 intif ltrim(rtrim(@chrwhere))<>''
       begin
            set @a1=charindex('code'>=,@chrwhere)+5 
    set @a2=charindex('code'<=,@chrwhere)+5
    set @b1=charindex('cquantity'>=,@chrwhere)+6
    set @b2=charindex('cquantity'<=,@chrwhere)+6
    set @c1=charindex('xquantity'>=,@chrwhere)+5
    set @c2=charindex('xquantity'<=.@chrwhere)+5
    set @d1=charindex('cmoney'>=,@chewhere)+6
    set @d2=charindex('cmoney'<=,@chrwhere)+6
    set @e1=charindex('xmoney'>=,@chrwhere)+5
    set @e2=charindex('xmoney'<=,@chrwhere)+5        if @a1>5 set @scode=substring(@chrwhere,@a1,charindex('''',@chrwhere,@a1)-@a1)
    if @a2>5 set @ecode=substring(@chrwhere,@a2,charindex('''',@chrwhere,@a2)-@a2)
            if @b1>6 set @scquantity=substring(@chrwhere,@b1,charindex('''',@chrwhere,@b1)-@b1)
    if @b2>6 set @ecquantity=substring(@chrwhere,@b2,charindex('''',@chrwhere,@b2)-@b2)
            if @c1>5 set @sxquantity=substring(@chrwhere,@c1,charindex('''',@chrwhere,@c1)-@c1)
    if @c2>5 set @exquantity=substring(@chrwhere,@c2,charindex('''',@chrwhere,@c2)-@c2)
            if @d1>6 set @scmoney=substring(@chrwhere,@d1,charindex('''',@chrwhere,@d1)-@d1)
    if @d2>6 set @ecmoney=substring(@chrwhere,@d2,charindex('''',@chrwhere,@d2)-@d2)
            if @e1>5 set @sxmoney=substring(@chrwhere,@e1,charindex('''',@chrwhere,@e1)-@e1)
    if @e2>5 set @exmoney=substring(@chrwhere,@e2,charindex('''',@chrwhere,@e2)-@e2)
       End