簡體   English   中英

從文本列中檢索 xml 數據

[英]Retrieve xml-data from text-column

我有一個表,其中有一個包含 xml 文件的字段(數據類型“文本”)。 經過一些嘗試和錯誤后,我發現從該表中獲取完整 xml 文件的唯一方法是使用 ms sql 的“FOR XML”子句。但我的下一個問題是,包含 xml 文件的列是命名為“XML_F52E2B61-18A1-11D1-B105-00805F49916B”之類的東西,這是 cf 的無效標識符。

有沒有辦法通過它的 id 而不是它的名稱來訪問該列,或者訪問該列的最佳方法是什么?

編輯:我使用的 SQL 語句是:

SELECT XmlPackage
FROM LogK3OnChange 
WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
FOR XML RAW

問候,

平子

如果將查詢嵌入到子查詢中,則可以為列命名。

select
  (
    select *
    from YourTable
    for xml path('Row'), root('Root')
  ) as NewColumnName

隨着您的查詢:

SELECT
  (
    SELECT XmlPackage
    FROM LogK3OnChange 
    WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
          AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
    FOR XML PATH
  ) AS NewColumnName

更新:
如果您希望該列是 XML 數據類型,您應該將type關鍵字添加到您的查詢中。 不確定這是否會對 coldfusion 產生影響。

SELECT
  (
    SELECT XmlPackage
    FROM LogK3OnChange 
    WHERE DealerID = IsNull(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.dealerid#">, DealerID)
          AND LogID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.logid#">
    FOR XML PATH, TYPE
  ) AS NewColumnName

知道了

<cfoutput>#myQuery["XML_F52E2B61-18A1-11D1-B105-00805F49916B"][1]#</cfoutput>

做的伎倆

這是一個更好的答案,因為它不依賴於可能在 coldfusion 的某些后續版本中發生變化的字符串。

<cfoutput>#QueryName[QueryName.ColumnList][1]#</cfoutput>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM