求字符串处理sql句子
记录如下:
aa120kk
bbb33dd-2mm
等等要求用sql句子转换成
aa...kk
bbb...dd-2mm
意思就是将前面的数字都取代成...

解决方案 »

  1.   

    var
      ps:PChar;
      i:integer;
      s:string;
    begin
      GetMem(ps,20);
      strpcopy(ps,'bbb33dd-2mm');
      for i:=0 to length('bbb33dd-2mm')-1 do
      begin
        if ps[i] in ['0'..'9'] then
          ps[i]:='.'
      end;
      Edit1.Text:=strpas(ps);
      FreeMem(ps,20);
    end;
      

  2.   

    sql server可以自己定义函数哦
      

  3.   


    SELECT REPLACE('aa120kk','120','...')SELECT REPLACE('bbb33dd-2mm','33','...')
      

  4.   

    guoqing89383859(国庆) 的作法有以下問題:有幾個數字就會有幾個".",而樓主是都是三個"."
     JonnySun() :數據多的話那你天天寫SQL語句吧,不用干別的事了
    期待好方法,幫頂!!
      

  5.   


    create  function GetDotText(@Str varchar(100))
    returns  varchar(100)
    as
    begin
      declare @retstr varchar(100),
              @I int,
              @B int  Set @I=0
      Set @B=0
      WHILE (@I<=len(@Str))
      BEGIN
        if SUBSTRING(@Str,@I,1) in ('0','1','2','3','4','5','6','7','8','9')
        begin 
           set @B=1
           set @Str = Replace(@Str,SUBSTRING(@Str,@I,1),'.')       
           set @I=@I+1
        end
        ELSE
        begin
           set @I=@I+1       
           if @B=1 break
        end
      END
       set @retstr=@Str
       return @retstr
    endselect dbo.GetDotText(bankname) from t_bank
    select bankname from t_bank
      

  6.   

    TNND, 我飯還沒吃在給你答問題, 最終版!!!!
    alter  function GetDotText(@Str varchar(100))
    returns  varchar(100)
    as
    begin
      declare @retstr varchar(100),
              @I int,
              @B int,
              @T varchar (100)  Set @I=0
      Set @B=0
      set @T=''
      WHILE (@I<=len(@Str)+1)
      BEGIN
        if SUBSTRING(@Str,@I,1) in ('0','1','2','3','4','5','6','7','8','9')
        begin 
           set @B=1
    --       set @Str = Replace(@Str,SUBSTRING(@Str,@I,1),'.')       
           Set @T=@T+SUBSTRING(@Str,@I,1)
           set @I=@I+1
        end
        ELSE
        begin
           if @B=1 break
           set @I=@I+1       
        end
      END
      set @retstr=replace(@Str,rtrim(ltrim(@T)),'...')
      return @retstr
    --return @Tend--drop function GetDotText
    select dbo.GetDotText(bankname) from t_bank
    select bankname from t_bank
      

  7.   

    jonnysun:写的很棒,就是我再查看了一下数据库发现还有这种情况的,如:2BB30/kk 想转成2BB.../kk的形式。能不能再帮我改一下,谢谢了。
      

  8.   

    將 Set @I=0 改成  Set @I=2 就可以了它會跳過第一個為數據字的字符