我對 XML 使用很陌生,我試圖實作類似這里問題的要求的東西
在 SQL Server 中將行轉換為 XML 格式
但是<tag1>value<\tag1>我不需要輸出為<tag1=value>,因此使用原始示例輸出將類似于
<period_sid period_sid=1802 PROJECTION_SALES=1595642.121 PROJECTION_UNITS=18834.75725 ACCOUNT_GROWTH=0 PRODUCT_GROWTH=0\>
據我所知,我需要的類似于 SQL 服務器上的 XML AUTO,但我似乎無法在 mySQL 上找到等價物。
抱歉,如果這不是正確的提問方式,這是我第一次使用該網站:P
uj5u.com熱心網友回復:
嘗試類似如下(注意,整個屬性a1=""通過a5=""被替換,而不僅僅是它們的值)...
create table Period (
period_sid int,
PROJECTION_SALES decimal(18, 3),
PROJECTION_UNITS decimal(18,5),
ACCOUNT_GROWTH int,
PRODUCT_GROWTH int
);
insert Period
(period_sid, PROJECTION_SALES, PROJECTION_UNITS, ACCOUNT_GROWTH, PRODUCT_GROWTH)
values
(1802, 1595642.121, 18834.75725, 0, 0);
select
UpdateXML(UpdateXML(UpdateXML(UpdateXML(UpdateXML(
'<period_sid a1="" a2="" a3="" a4="" a5="" />',
'period_sid/@a1', concat('period_sid="', period_sid, '"')),
'period_sid/@a2', concat('PROJECTION_SALES="', Projection_Sales, '"')),
'period_sid/@a3', concat('PROJECTION_UNITS="', PROJECTION_UNITS, '"')),
'period_sid/@a4', concat('ACCOUNT_GROWTH="', ACCOUNT_GROWTH, '"')),
'period_sid/@a5', concat('PRODUCT_GROWTH="', PRODUCT_GROWTH, '"'))
as 'Demo'
from Period;
產生輸出:
<period_sid period_sid="1802" PROJECTION_SALES="1595642.121" PROJECTION_UNITS="18834.75725" ACCOUNT_GROWTH="0" PRODUCT_GROWTH="0" />
uj5u.com熱心網友回復:
對 SQL Server 有效,在更改問題標記之前
看起來您想要以屬性為中心的結果,使用 FOR XML
您可以在每列之前使用FOR XML PATH一個@符號:
SELECT
period_sid AS [@period_sid],
PROJECTION_SALES AS [@PROJECTION_SALES],
PROJECTION_UNITS AS [@PROJECTION_UNITS],
ACCOUNT_GROWTH AS [@ACCOUNT_GROWTH],
PRODUCT_GROWTH AS [@PRODUCT_GROWTH]
FROM period
FOR XML PATH('period_sid');
或者您可以使用FOR XML AUTO,但是這種語法具有較少的自定義可能性
SELECT
period_sid,
PROJECTION_SALES,
PROJECTION_UNITS,
ACCOUNT_GROWTH,
PRODUCT_GROWTH
FROM period AS period_sid
FOR XML AUTO;
| 結果 |
|---|
| <period_sid period_sid="1802" PROJECTION_SALES="1595642.121000000" PROJECTION_UNITS="18834.757250000" ACCOUNT_GROWTH="0.000000000" PRODUCT_GROWTH="0.000/>00000 |
資料庫<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/326260.html
