Anda seharusnya dapat melakukannya dengan mudah:
SELECT *
FROM WebPageContent
WHERE data.value('(/PageContent/Text)[1]', 'varchar(100)') LIKE 'XYZ%'
The .value
Metode memberi Anda nilai aktual, dan Anda dapat menentukan bahwa harus dikembalikan sebagai VARCHAR (), yang kemudian dapat memeriksa dengan laporan SEPERTI.
Pikiran Anda, ini tidak akan terlalu cepat. Jadi jika Anda memiliki bidang tertentu dalam XML yang perlu banyak diperiksa, Anda dapat:
- buat fungsi tersimpan yang mendapatkan XML dan mengembalikan nilai yang Anda cari sebagai VARCHAR ()
- tentukan kolom komputasi baru di tabel Anda yang memanggil fungsi ini, dan menjadikannya kolom PERSISTED
Dengan ini, pada dasarnya Anda akan "mengekstrak" bagian tertentu dari XML ke dalam bidang yang dihitung, membuatnya bertahan, dan kemudian Anda dapat mencarinya dengan sangat efisien (heck: Anda bahkan dapat mengindeks bidang itu!).
Marc
Namun opsi lainnya adalah mentransmisikan XML sebagai nvarchar, lalu mencari string yang diberikan seolah-olah XML merupakan bidang nvarchar.
SELECT * FROM Table WHERE CAST(Column as nvarchar(max)) LIKE '%TEST%'
Saya menyukai solusi ini karena bersih, mudah diingat, sulit untuk dikacaukan, dan dapat digunakan sebagai bagian dari klausa where.
EDIT: Seperti yang dikatakan Cliff, Anda dapat menggunakan:
sumber
Pilihan lainnya adalah mencari XML sebagai string dengan mengubahnya menjadi string dan kemudian menggunakan LIKE. Namun karena kolom yang dihitung tidak bisa menjadi bagian dari klausa WHERE Anda perlu membungkusnya di SELECT lain seperti ini:
SELECT * FROM (SELECT *, CONVERT(varchar(MAX), [COLUMNA]) as [XMLDataString] FROM TABLE) x WHERE [XMLDataString] like '%Test%'
sumber
Inilah yang akan saya gunakan berdasarkan jawaban marc_s:
SELECT SUBSTRING(DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)'),PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')) - 20,999) FROM WEBPAGECONTENT WHERE COALESCE(PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')),0) > 0
Kembalikan substring pada pencarian di mana terdapat kriteria pencarian
sumber