【问题标题】:Function in SQL Select StatementSQL Select 语句中的函数
【发布时间】:2009-07-31 08:02:31
【问题描述】:
CREATE VIEW View1
  AS
  SELECT Col1,
         Col2,
         dbo.fn1(col2) as Col3
  FROM   TestTable

  /*
  --Instead of writing below query I created a new View View2


  SELECT Col1,
         Col2,
         dbo.fn1(col2) as Col3
         dbo.fn2(dbo.fn1(col2)) as Col4
  FROM   TestTable
  */

  CREATE VIEW View2
  AS
  SELECT Col1,
         Col2,
         Col3,
         dbo.fn3(col3) as Col4
  FROM   TestTable

我有一个像上面这样的查询。我有一列是 fn1 的输出。我想将该输出用于其他函数 fn2。在那种情况下,我不能直接在 fn2 中使用 col3,所以我拆分了两个函数并查看如下。我想知道我是否朝着正确的方向前进,我正在做的事情是正确的还是有更好的方法来做到这一点?在 View1 的注释部分中,函数 fn1 会调用两次吗?还是 SQL Server 会负责优化它?

【问题讨论】:

    标签: sql sql-server sql-server-2005 performance user-defined-functions


    【解决方案1】:

    你可以这样做...

    SELECT
        Col1,
        Col2,
        col3,
        dbo.fn2(col3) AS Col4
    FROM
        (
        SELECT
            Col1,
            Col2,
            dbo.fn1(col2) as Col3
        FROM
            TestTable
        ) foo
    

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2015-02-27
      • 2014-12-23
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多