جستجوی کاراکترهای wildcards توسط ماده اختیاری ESCAPE
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: یک دقیقه

syntax کامل LIKE:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

چهار کاراکتر وجود دارد که الگوهای جستجو را توسط آنها تعریف می‌کنند. این کاراکترها wildcard نام دارند.
زمانی که کاراکترهای wildcard موجود در الگوی ما به عنوان کاراکترهای عادی در نظر گرفته شده اند نه wildcard آنگاه باید به SQL اطلاع دهیم که آنها را با کاراکترهای wildcard اشتباه نگیرد، برای این منظور چندین راه حل وجود دارد که در ادامه شرح خواهم داد.

فرض کنید الگوی شما این مقدار باشد:
"تنها دو کاراکتر % کاراکترهای wildcard هستند"
%[abcde_ ]%

روش اول: ESCAPE
WHERE string_value LIKE '%@[abcde@_ ]%' ESCAPE '@'
دو کاراکتر ] و _ علامت گذاری (بوسیله @) و توسط ماده ESCAPE به عنوان کاراکترهای معمولی شناخته شدند.

روش دوم: Bracket
WHERE string_value LIKE '%[[]abcde[_] ]%'
دو کاراکتر ] و _ را داخل [] قرار دادیم.

روش سوم: CHARINDEX
WHERE CHARINDEX('[abcde_ ]', string_value) > 0
عبارت را بدون هیچ گونه تغییری در تابع استفاده کردیم. این روش تنها زمانی مورد استفاده می‌تواند قرار گیرد که کاراکتر % در ابتدا یا انتهای (یا هر دو) آن قرار گرفته باشد.


تمرین:
عباراتی را پیدا کنید که الگوی زیر در آن پیدا شود، فقط آخرین کاراکتر wildcard می‌باشد یعنی کاراکتر %
[[[%^ab'c'de]]]%
برای تست راه حلتان از متغیر جدولی زیر استفاده کنید:

declare @t table (s varchar(50))
insert @t values ('[[[%^ab''c''de]]]%'),
('[[[ %^ab''cde]]%'), ('[[%^ab''c''de]]%'),
('[[[%^abc''de]]]%');