我有一个包含xml文件的字段(数据类型为“text”)的表。经过一些尝试和错误后,我发现从该表中获取完整的xml文件的唯一方法是使用ms sql的“FOR XML”子句。 但我的下一个问题是,包含xml文件的列的名称类似于“XML_F52E2B61-18A1-11D1-B105-00805F49916B”,这是cf的invald标识符。
是否可以通过其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
此致
的Heiko
答案 0 :(得分:2)
如果您在子查询中嵌入查询,则可以为列命名。
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
答案 1 :(得分:0)
搞定了
<cfoutput>#myQuery["XML_F52E2B61-18A1-11D1-B105-00805F49916B"][1]#</cfoutput>
诀窍
答案 2 :(得分:0)
这是一个更好的答案,因为它不依赖在以后的Coldfusion版本中可能会更改的字符串。
<cfoutput>#QueryName[QueryName.ColumnList][1]#</cfoutput>