Tengo el siguiente XML almacenado en una columna XML (llamada Roles
) en una base de datos de SQL Server.
<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>
Me gustaría enumerar todas las filas que tienen un rol específico en ellas. Este rol pasó por parámetro.
sql
sql-server
xml
xquery
Pequeño restaurante
fuente
fuente
[1]
en su respuesta?[1]
fue una muy buena pregunta. Significa que elige el primer valor de rol del XML y significa que esto solo funcionará para encontrarAlpha
en su xml de muestra. No encontrará la fila si la buscaBeta
.Si desea que la consulta funcione como
where col like '%Beta%'
puede usarcontains
fuente
si el nombre de su campo es Roles y el nombre de la tabla es table1, puede usar el siguiente para buscar
fuente
like
?forexample /root/role like ....
.value('(/root/role)[1]', 'varchar(max)') like '%yourtext%'
lugar deexists
como Leniel explicó@Role
.Se me ocurrió un trabajo simple a continuación que también es fácil de recordar :-)
fuente
Podrías hacer lo siguiente
Obviamente, esto es un truco y no lo recomendaría para ninguna solución formal. Sin embargo, encuentro esta técnica muy útil cuando hago consultas adhoc en columnas XML en SQL Server Management Studio para SQL Server 2012.
fuente
Consejo útil Consultar un valor en la columna XML de SQL Server (XML con espacio de nombres)
p.ej
por ejemplo, XML en parámetros:
Por ejemplo, consulta:
fuente
Usé la siguiente declaración para recuperar los valores en el XML en la tabla SQL
fuente
Puede consultar la etiqueta completa o solo el valor específico. Aquí uso un comodín para los espacios de nombres xml.
fuente