У меня есть следующий XML, хранящийся в столбце XML (называемом Roles
) в базе данных SQL Server.
<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>
Я хотел бы перечислить все строки, у которых есть определенная роль. Эта роль передается параметром.
sql
sql-server
xml
xquery
Бистро
источник
источник
[1]
в вашем ответе?[1]
было действительно хорошим вопросом. Это означает, что вы выбираете первое значение роли из XML, а это означает, что это будет работать только для поискаAlpha
в вашем образце xml. Если вы выполните поиск, он не найдет строкуBeta
.Если вы хотите, чтобы запрос работал,
where col like '%Beta%'
вы можете использоватьcontains
источник
если ваше имя поля - Роли, а имя таблицы - table1, вы можете использовать следующее для поиска
источник
like
?forexample /root/role like ....
.value('(/root/role)[1]', 'varchar(max)') like '%yourtext%'
вместо того,exists
как объяснил@Role
.Я придумал простую работу ниже, которую тоже легко запомнить :-)
источник
Вы могли бы сделать следующее
Очевидно, это что-то вроде взлома, и я бы не рекомендовал его для каких-либо официальных решений. Однако я считаю этот метод очень полезным при выполнении специальных запросов к столбцам XML в SQL Server Management Studio для SQL Server 2012.
источник
Полезный совет. Запросить значение в столбце XML SQL Server (XML с пространством имен)
например
например, XML в параметрах:
например, запрос:
источник
Я использовал приведенный ниже оператор для получения значений в XML в таблице Sql.
источник
Вы можете запросить весь тег или только конкретное значение. Здесь я использую подстановочный знак для пространств имен xml.
источник