从配置文件中选择时出现SQL语法错误

时间:2014-04-10 18:30:41

标签: sql sql-server xml

我正在使用以下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);

1 个答案:

答案 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);