任何人都可以帮我理解下面的代码。请帮助我如何工作,因为我是新的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
答案 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的更多信息: