在网上搜索有关使用XML与SQL Server加入/拆分/非规范化数据的一些帮助,我找到了this page,我对下面粘贴的样本中的起始分号很感兴趣。这是为什么 ;那里 ?
;WITH cte AS (
SELECT
DeveoperID,
CAST('<r>' + REPLACE(ProjectCodes, ',', '</r><r>') + '</r>' AS XML) AS ProjectCodes
FROM @DeveloperProjectCSV
)
SELECT
DeveoperID,
xTable.xColumn.value('.', 'VARCHAR(MAX)') AS ProjectCode
FROM cte
CROSS APPLY ProjectCodes.nodes('//r') AS xTable(xColumn)
答案 0 :(得分:2)
它用于结束之前的语句或批处理语句,因此它实际上是前一个语句的一部分。
如果with
是第一个语句,则不需要它。它通常被习惯包含在with
中,即使不需要它也是如此。我倾向于这样做只是为了确保先前的语句已经结束,但正确使用分号将是在前一个语句的末尾(它所属的地方)使用它。
公用表表达式的文档声明:
当CTE用于作为批次一部分的语句中时, 之前的陈述必须后跟分号。
一些有用的文档: