我正在使用以下T-SQL从本地计算机上的配置文件中选择一个值。但是,就行了,
SELECT xmlData.Col.value('Setting','varchar(max)')
我收到语法错误。我正确地获得了配置文件,我可以看到在第一个选择中,但是无法正确地从配置文件中的特定节点获取值(在这种情况下,是配置文件的appsettings中的一个键)。
declare @table table (Value XML)
insert @table
select a.* from openrowset (bulk 'C:\Program Files\Config.config', single_clob) a
select * from @table
DECLARE @TEMPSTRING AS nvarchar(100)
SET @TEMPSTRING = (select Value.value('filelocation[1]', 'varchar(100)')
from @table)
Select @TEMPSTRING
DECLARE @XML AS XML
SET @XML = CAST(@TEMPSTRING as XML)
SELECT xmlData.Col.value('I AM TRYING TO GET THE SPECIFIC VALUE HERE','varchar(max)')
FROM @XML.nodes('//configuration/appSettings')
xmlData(Col);
答案 0 :(得分:1)
如果您尝试从appSettings节点中提取单个值,则需要按如下方式编写它:
SELECT xmlData.Col.value('@value','varchar(max)')
FROM @XML.nodes('//configuration/appSettings/add[@key="THE SETTING NAME"]') xmlData(Col);
此外,您可以使用此select语句获取所有键和值
SELECT
xmlData.Col.value('@key','varchar(max)')[Key],
xmlData.Col.value('@value','varchar(max)')[Value]
FROM
@XML.nodes('//configuration/appSettings/add')xmlData(Col);