3

私は次の場合に使用しようとしているこの状況を持っています.それは機能しますが、期待どおりに機能しません.. preStateに何も選択されていない場合、Null が発生します。選択ごとに表示したい.見てください。ありがとうございます..私の場合に何か問題があります....「コピーして実行できます」

       DECLARE     @returnvalue VARCHAR(50)
        ,@state VARCHAR(50)
        ,@i INT
        ,@postState  VARCHAR(50)
        ,@preState  VARCHAR(50)
        ,@Anystring  VARCHAR(255)
        ,@state1 VARCHAR(50)
        ,@state2 VARCHAR(50)

        SET @Anystring='IA all the states Colorado '

      SELECT @state =LTRIM((RTRIM(SUBSTRING(@Anystring, LEN(@Anystring) -      CHARINDEX(' ', REVERSE(@Anystring))+1 , LEN(@Anystring)))))

         SET @state =REPLACE(REPLACE(@Anystring, '.', ' '), '&', ' ')

         set @state1=@state


  SET @i = CHARINDEX(' ',@state1 )

  If (@i > 0 and SUBSTRING(@state1, 1, @i-1) IN ('IA','CO','Iowa','Colorado'))
     begin
     SELECT  @preState = RTRIM(SUBSTRING(@state1, 1, 1)), 
             @state1 = LTRIM(SUBSTRING(@state1, @i+1, 999))
     end

   else IF (@i > 0 and SUBSTRING(@state, 1, @i-1) IN ('DC','SEA','NY'))
     begin
     SELECT  @preState = RTRIM(SUBSTRING(@state1, 1, 2)), 
             @state1 = LTRIM(SUBSTRING(@state1, @i+1, 999))

     end        


   SET @i = LEN(@state1) - CHARINDEX(' ', REVERSE(rtrim(@state1)))
  IF (@i > 0 and @i < LEN(@Anystring) and SUBSTRING(@state1, @i+2, 999) IN     ('IA','CO','Iowa','Colorado')) 
      begin
     SELECT @postState = SUBSTRING(@state1, @i+2, 1),
             @state1 = RTRIM(SUBSTRING(@state1, 1, @i))
      end       

else IF (@i > 0 and @i < len(@state)  and SUBSTRING(@state1, @i+2, 999) IN ('DC','SEA','NY')) 
    begin
     SELECT @postState = SUBSTRING(@state1, @i+2, 2),
             @state1 = RTRIM(SUBSTRING(@state1, 1, @i))
    end         

else IF (@i > 0 and SUBSTRING(@state1, 1, @i-1) IN ('','  ','   '))  
        begin

        SELECT @postState = '',
             @state1 = LTRIM(SUBSTRING(@state1, 1, 999))          
        end           
      SET  @state1=@preState+' ' + @state1+' '+@postState 

      set @state2=@state1


      select @state2
4

1 に答える 1

1

あなたが意味するならあなたはからNULLを得る

SET  @state1=@preState+' ' + @state1+' '+@postState 

次に、プレフィックスの不足を処理するためにISNULLを使用する必要があります

SET  @state1= isnull(@preState+' ','') + @state1+' '+@postState 

@poststateについても同じ

于 2012-10-04T23:26:02.183 に答える