Mencari Prosedur Tersimpan yang Mengandungi Teks Khusus, Termasuk Watak Khas
Mencari teks tertentu dalam prosedur tersimpan SQL Server boleh menjadi rumit, terutamanya apabila teks tersebut termasuk aksara khas seperti kurungan segi empat sama.
Cabaran:
Bayangkan anda perlu mencari semua prosedur tersimpan yang mengandungi rentetan "[ABD]". Pendekatan naif menggunakan LIKE
mungkin kelihatan seperti ini:
<code class="language-sql">SELECT DISTINCT o.name AS Object_Name, o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition LIKE '%[ABD]%';</code>
Ini gagal kerana LIKE
mentafsir kurungan segi empat sama sebagai aksara kad bebas, menjadikan carian tidak tepat.
Penyelesaian:
Kuncinya ialah melarikan diri daripada watak istimewa. SQL Server menggunakan garis miring ke belakang () sebagai aksara melarikan diri. Inilah pertanyaan yang diperbetulkan:
<code class="language-sql">SELECT DISTINCT o.name AS Object_Name, o.type_desc FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id WHERE m.definition LIKE '%\[ABD\]%' ESCAPE '\';</code>
Klausa ESCAPE ''
memberitahu LIKE
untuk menganggap mana-mana aksara yang didahului oleh garis serong ke belakang sebagai aksara literal, bukan kad bebas. Ini memastikan carian mengenal pasti dengan tepat prosedur tersimpan yang mengandungi rentetan tepat "[ABD]". Kaedah ini berkesan mengendalikan aksara khas lain dalam definisi prosedur tersimpan, memberikan hasil carian yang tepat.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Prosedur Tersimpan yang Mengandungi Teks Khusus Termasuk Aksara Khas dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!