任何人都可以解释下面的代码。

时间:2011-09-19 10:40:52

标签: sql-server-2008

任何人都可以帮我理解下面的代码。请帮助我如何工作,因为我是新的lerning sql server。

WITH SearchTerms(Term)
     AS (SELECT ' I '
         UNION ALL
         SELECT ' II '
         UNION ALL
         SELECT ' III '
         UNION All
         SELECT ' MD '
          UNION All
         SELECT ' M.D '
          UNION All
         SELECT ' M.D. '
          UNION All
         SELECT ' D.O '
           UNION All
         SELECT ' D.O. '
           UNION All
         SELECT ' DO '
         ),
     ToBeSearched(string)
     AS (SELECT 'sjfhasjdg III do ')
SELECT string,
       Term,
       Charindex(Term, string) AS Location
FROM   ToBeSearched
       JOIN SearchTerms
         ON Charindex(Term, string) > 0  

1 个答案:

答案 0 :(得分:3)

此查询使用两个Common Table Expressions,然后使用SELECT形成INNER JOIN语句。

第一个公用表表达式(CTE)使用UNION为表创建一组结果。

第二个CTE只包含一个记录,其中包含一列,值为'sjfhasjdg III do '

查询结尾处的SELECT语句将根据第二个CTE中的记录过滤掉第一个CTE的结果。

结果集将是:

string               Term   Location
sjfhasjdg III do     III    10
sjfhasjdg III do     DO     14

有关CTE的更多信息:

http://msdn.microsoft.com/en-us/library/ms190766.aspx