私はこれに関する助けが必要です。 は私がクエリをhtmlテーブルにエクスポートするときの浮動小数点値のフォーマットが正しくない
-- Description: Turns a query into a formatted HTML table. Useful for emails.
-- Any ORDER BY clause needs to be passed in the separate ORDER BY parameter.
-- =============================================
CREATE PROC [dbo].[spQueryToHtmlTable]
(
@query nvarchar(MAX), --A query to turn into HTML format. It should not include an ORDER BY clause.
@orderBy nvarchar(MAX) = NULL, --An optional ORDER BY clause. It should contain the words 'ORDER BY'.
@html nvarchar(MAX) = NULL OUTPUT --The HTML output of the procedure.
)
AS
BEGIN
SET NOCOUNT ON;
IF @orderBy IS NULL BEGIN
SET @orderBy = ''
END
SET @orderBy = REPLACE(@orderBy, '''', '''''');
DECLARE @realQuery nvarchar(MAX) = '
DECLARE @headerRow nvarchar(MAX);
DECLARE @cols nvarchar(MAX);
SELECT * INTO #dynSql FROM (' + @query + ') sub;
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'', @[email protected] OUTPUT
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', @[email protected] OUTPUT
END
GO
(Convert a SQL query result table to an HTML table for emailからコードを得た)HTMLテーブルにSQL queresをエクスポートするには、このコードを使用したコードは完璧に動作しますが、浮動小数点値をフォーマットする一つの問題があります。 例えば:
SELECT名前、体重製品
管理Studioから実行時にクエリは、このようなものを返すFROM:
Name1 | 1073,822
Name2 | 179,554
私はHTMLテーブルにこれをエクスポートするストアドプロシージャを使用すると、
Name1 | 1.073822000000000e+003
Name2 | 1.795540000000000e+002
ストアドプロシージャを順番に変更する方法がわからないのですがfloat値のこの誤った書式設定を避けるためです。
これについての助けに感謝します。あなたは、HTMLテーブルの値を表示するには、キャストを使用している
[編集]ボタンを使用して質問に追加情報を追加する必要があります。回答ボックスは、質問に対する回答としてのみ使用し、それ以上の質問には使用しないでください。 –