Я пытаюсь извлечь данные из столбца XML в таблице и понял, что никогда не смогу найти что-то очень хорошее, так как форматирование содержит & lt и другие символы. С тех пор я преобразовал документ в переменную nvarchar, чтобы я мог выполнять свои собственные поиски посредством поиска по тексту.
Я сделал это вместе (ужасно, извините), и теперь я думаю, что, возможно, было бы лучше использовать таблицу tmp, но в любом случае.
Я понял, что не собираю по записи @profilename из-за того, что используется TOP 1, но хотел бы, чтобы он появлялся в основном теле выбора для каждой записи, но я немного растерялся ...
DECLARE @LOGGING AS nvarchar(10)
DECLARE @Profilename nvarchar(100)
DECLARE @configxml_vchar nvarchar(MAX)
DECLARE @configxml XML
SET @Profilename = NULL
SET @LOGGING = 'low'
SET @configxml = (Select TOP 1 configxml from dirsyncpro.dbo.bt_config ) ----where bt_config_pk = 5
SET @configxml_vchar = (select cast(@configxml as nvarchar(max)))
SET @profilename = (SELECT SUBSTRING(@configxml_vchar, CHARINDEX('SyncName', @configxml_vchar)
, CHARINDEX('/SyncName',@configxml_vchar) - CHARINDEX('SyncName', @configxml_vchar) + Len('/SyncName')))
select @Profilename AS ProfileName, BT_Config_PK AS ProfileID, LastModified, ConfigXML, @LOGGING AS LogLevel from DirSyncPro.dbo.BT_Config where configxml.exist('//*/text()[contains(upper-case(.),upper-case("LoggingLevel>low</LoggingLevel"))]') = 1
Я ищу выбор в представлении, которое я представляю, но не могу определить, куда он должен идти или как его отформатировать ...
Я ценю любую помощь, которую вы можете оказать.