Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога да направя заявка за стойност в XML колоната на SQL Server

select
  Roles
from
  MyTable
where
  Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'

В случай, че колоната ви не е XML , трябва да го преобразувате. Можете също да използвате друг синтаксис, за да заявите определени атрибути на вашите XML данни. Ето един пример...

Да предположим, че колоната с данни има това:

<Utilities.CodeSystems.CodeSystemCodes iid="107" CodeSystem="2" Code="0001F" CodeTags="-19-"..../>

... и искате само тези, при които CodeSystem = 2 тогава вашата заявка ще бъде:

select 
  [data] 
from
  [dbo].[CodeSystemCodes_data]
  
where
  CAST([data] as XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'

Тези страници ще ви покажат повече за това как да заявите XML в T-SQL:

Запитване на XML полета с помощта на t-sql

Изравняване на XML данни в SQL Server

РЕДАКТИРАНЕ

След като поиграх с него още малко, стигнах до тази невероятна заявка, която използва CROSS APPLY. Този ще търси във всеки ред (роля) стойността, която сте поставили в израза си like...

Като се има предвид тази структура на таблицата:

create table MyTable (Roles XML)

insert into MyTable values
('<root>
   <role>Alpha</role>
   <role>Gamma</role>
   <role>Beta</role>
</root>')

Можем да го направим по следния начин:

select * from 

(select 
       pref.value('(text())[1]', 'varchar(32)') as RoleName
from 
       MyTable CROSS APPLY

       Roles.nodes('/root/role') AS Roles(pref)
)  as Result

where RoleName like '%ga%'

Можете да проверите SQL Fiddle тук:http://sqlfiddle.com/#!18/dc4d2/1/0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Събиране на данни за производителността с помощта на инструмента SQLDiag | Отстраняване на проблеми с производителността на SQL Server -6

  2. Проверете дали даден обект е съхранена процедура, като използвате OBJECTPROPERTY() в SQL Server

  3. Примери за форматиране на „datetimeoffset“ в SQL Server с помощта на стандартни форматни низове (T-SQL)

  4. Как да групирате по месеци от полето Дата с помощта на sql

  5. Разделени със запетая резултати в SQL