为什么在查询中使用如此多的单引号

时间:2016-09-27 09:14:58

标签: sql sql-server sql-server-2008 sql-server-2012

我正在搜索生成html表的查询。我找到了这个查询,但是我无法理解这里使用的这么多单引号是什么用的 为什么所有代码​​都在变量中创建我是sql的新人请帮助我。

BEGIN
    SET NOCOUNT ON;

    IF @orderBy IS NULL
    BEGIN
        SET @orderBy = ''
    END

    SET @orderBy = REPLACE(@orderBy, '''', '''''');
    DECLARE @realQuery NVARCHAR(MAX) = ' //this is variable which take all query as string
    DECLARE @headerRow nvarchar(MAX);
    DECLARE @cols nvarchar(MAX);    

    SELECT * INTO #dynSql FROM (' + @query + ') sub; -- how this temp table create 

    SELECT @cols = COALESCE(@cols + '', '''''''', '', '''') + ''['' + name + ''] AS ''''td''''''
    FROM tempdb.sys.columns 
    WHERE object_id = object_id(''tempdb..#dynSql'')
    ORDER BY column_id;

    SET @cols = ''SET @html = CAST(( SELECT '' + @cols + '' FROM #dynSql ' + @orderBy + ' FOR XML PATH(''''tr''''), ELEMENTS XSINIL) AS nvarchar(max))''    

    EXEC sys.sp_executesql @cols, N''@html nvarchar(MAX) OUTPUT'', @html=@html OUTPUT
    --in coalesce why so many '''' used
    SELECT @headerRow = COALESCE(@headerRow + '''', '''') + ''<th>'' + name + ''</th>'' 
    FROM tempdb.sys.columns 
    WHERE object_id = object_id(''tempdb..#dynSql'')
    ORDER BY column_id;

    SET @headerRow = ''<tr>'' + @headerRow + ''</tr>'';

    SET @html = ''<table border="1">'' + @headerRow + @html + ''</table>'';    
';

    EXEC sys.sp_executesql @realQuery
    ,N'@html nvarchar(MAX) OUTPUT'
    ,@html = @html OUTPUT
END

以上查询工作正常,但我无法理解。

0 个答案:

没有答案