我想写一个函数来实现一下描述功能:
1,比如这么一条,有可能是:order by a.time,b.no 或者order by time,no 
2, 去掉a. b. 成为像1后者这么一条sql,如果传入的是后者这样的,则不变怎么实现啊~~~~~~~~~~

解决方案 »

  1.   

    replace(replace('order by a.time,b.no','a.',''),'b.','')
      

  2.   


    SELECT * FROM #tb ORDER BY CASE WHEN 1=1 THEN a.time,b.no ELSE time,no END
      

  3.   

    你试试这个
    create function ff(@Input varchar(2000))
    returns varchar(2000)
    as
    if charindex(@Input,'.')>0
    set @Input=stuff(@Input,charindex(@Input,'.')-1,2,'')
    else
    return @Input
    end
      

  4.   

    可能这样编译不通过。
    改成两个SELECT * FROM #tb 
    ORDER BY CASE WHEN 1=1 THEN a.time,b.no ELSE time END
            ,CASE WHEN 1=1 THEN b.no ELSE no END
      

  5.   


    SELECT * FROM #tb 
    ORDER BY CASE WHEN 1=1 THEN a.time ELSE time END
            ,CASE WHEN 1=1 THEN b.no ELSE no END
      

  6.   

    上面那个写错了~~~
    create function ff(@Input varchar(2000))
    returns varchar(2000)
    begin
    while charindex(@Input,'.')>0
    set @Input=stuff(@Input,charindex(@Input,'.')-1,2,'')
    return @Input
    end
    go
      

  7.   

    10楼,函数参数写反了~~~囧~~~
    create function ff(@Input varchar(2000))
    returns varchar(2000)
    begin
    while charindex('.',@Input)>0
    set @Input=stuff(@Input,charindex('.',@Input)-1,2,'')
    return @Input
    end
    go
    select dbo.ff('select a.b,c.d,k.b,f.d from abc')/*-----------------------------------------------------
    select b,d,b,d from abc(1 行受影响)
    */
      

  8.   


    满足了我的需求,也学会了stuff()函数,谢谢啊,我还要一个问题,在应用板块,有时间一起看看啊!!!