select
Roles
from
MyTable
where
Roles.value('(/root/role)[1]', 'varchar(max)') like 'StringToSearchFor'
Halaman-halaman ini akan menunjukkan kepada Anda lebih lanjut tentang cara query XML di T-SQL:
Permintaan kolom XML menggunakan t-sql
Meratakan Data XML dalam SQL Server
EDIT
Setelah bermain dengannya sedikit lebih banyak, saya berakhir dengan permintaan yang luar biasa ini yang menggunakan CROSS APPLY . Yang ini akan mencari setiap baris (peran) untuk nilai yang Anda masukkan dalam ekspresi seperti Anda ...
Diberikan struktur tabel ini:
create table MyTable (Roles XML)
insert into MyTable values
('<root>
<role>Alpha</role>
<role>Gamma</role>
<role>Beta</role>
</root>')
Kami dapat menanyakannya seperti ini:
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%'
Anda dapat memeriksa SQL Fiddle di sini: http://sqlfiddle.com/#!18/dc4d2/1/0
[1]
dilakukan dalam jawaban Anda?[1]
pertanyaan yang sangat bagus. Ini berarti bahwa Anda memilih nilai peran pertama dari XML dan itu berarti bahwa ini hanya akan berfungsi untuk menemukanAlpha
di xml sampel Anda. Tidak akan menemukan baris jika Anda mencariBeta
.Jika Anda ingin kueri berfungsi seperti
where col like '%Beta%'
yang dapat Anda gunakancontains
sumber
jika nama bidang Anda adalah Peran dan nama tabel adalah table1 Anda dapat menggunakan berikut untuk mencari
sumber
like
?forexample /root/role like ....
.value('(/root/role)[1]', 'varchar(max)') like '%yourtext%'
alih-alihexists
seperti yang dijelaskan Leniel@Role
.Saya datang dengan pekerjaan sederhana di bawah ini yang juga mudah diingat :-)
sumber
Anda bisa melakukan hal berikut
Jelas ini adalah sedikit peretasan dan saya tidak akan merekomendasikannya untuk solusi formal apa pun. Namun saya menemukan teknik ini sangat berguna ketika melakukan permintaan adhoc pada kolom XML di SQL Server Management Studio untuk SQL Server 2012.
sumber
Tip yang bermanfaat. Permintaan nilai dalam kolom SQL Server XML (XML dengan namespace)
misalnya
misalnya XML dalam Parameter:
mis. Permintaan:
sumber
Saya menggunakan pernyataan di bawah ini untuk mengambil nilai-nilai dalam XML pada tabel Sql
sumber
Anda dapat meminta seluruh tag, atau hanya nilai spesifik. Di sini saya menggunakan wildcard untuk ruang nama xml.
sumber