我在视图里面加入这个查询,select dbo.match(tabname.columnname) from tabname。dbo.match(str)是自定义函数,它把tabname.columnname处理后作为字符串返回,但是这样查出来的就是处理后的字符串,而不是tabname.columnname的值。所以想问一下有没有方法把字符串转换成数据库SQL语句格式,使其查出来的是tabname.columnname的值。

解决方案 »

  1.   

    好象是這個意思select dbo.match(tabname.columnname) As columnname from tabname
      

  2.   

    這樣,你在程序中可以取得columnname這個字段的值了
      

  3.   

    这样吧select dbo.match(tabname.columnname) As columnname1,columnname from tabname
      

  4.   

    select dbo.match(tabname.columnname) As columnname from tabname这个语句跟我那个语句好像没有什么区别吧?只是可以看到columnname的名称。
      

  5.   

    to Haiwer(海阔天空):
       select dbo.match(tabname.columnname) As columnname1,columnname from tabname这样还是查不出我处理后想要的效果。
      

  6.   

    starduoduo() ( ) 信誉:100  2007-07-31 15:13:39  得分: 0  
     
     
       select dbo.match(tabname.columnname) As columnname from tabname这个语句跟我那个语句好像没有什么区别吧?只是可以看到columnname的名称。
      
     
    --------------加了個別名“As columnname ”,這樣你就可以用到columnname 這一列了。
      

  7.   

    to paoluo(一天到晚游泳的鱼) :
    加了個別名“As columnname ”,這樣你就可以用到columnname 這一列了。但是查出来的还是字符串,而不是我想得到的值。可能我说得不是很清楚,我的查询本来是这样的select tabname.columnname1+tabname.columnname2 as 名称 from tabname,如果columnname1和columnname2有一个是null,那么加出来的结果就是null,所以我写了个函数来处理这个公式,使它返回这样的结果isnull(tabname.columnname1,0)+isnull(tabname.columnname2,0),但是返回的是字符串,查询出来的结果就是字符串‘isnull(tabname.columnname1,0)+isnull(tabname.columnname2,0)’,而不是我想得到的两值相加的结果。
      

  8.   

    直接這樣不就可以,為什麼還要寫個函數那麼麻煩select IsNull(tabname.columnname1, 0) + IsNull(tabname.columnname2, 0) as 名称 from tabname
      

  9.   

    或者,你的函數不要返回字符串,而是返回IsNull(tabname.columnname1, 0) + IsNull(tabname.columnname2, 0)的結果,不也可以。
      

  10.   

    直接這樣不就可以,為什麼還要寫個函數那麼麻煩select IsNull(tabname.columnname1, 0) + IsNull(tabname.columnname2, 0) as 名称 from tabname因为我这个视图里面有很多公式,一个一个加很麻烦,而且容易出错。
      

  11.   

    to paoluo(一天到晚游泳的鱼) :
       我的函数只是处理字符串,没有涉及值的问题。
      

  12.   

    你最好還是考慮寫個返回值的函數吧,只是做ISNULL處理,應該不會很複雜。你這樣的返回字符串的函數沒辦法用,除非用動態SQL語句。
      

  13.   

    按照你的要求,函数大概如下create function dbo.match(
    @p1 numeric(18,4),@p2 numeric(18,4)
    )
    returns numeric(18,4)
    as
    begin
       return isnull(@p1,0)+isnull(@p2,0)
    end
    go