اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
syntax کامل LIKE:
چهار کاراکتر وجود دارد که الگوهای جستجو را توسط آنها تعریف میکنند. این کاراکترها wildcard نام دارند.
زمانی که کاراکترهای wildcard موجود در الگوی ما به عنوان کاراکترهای عادی در نظر گرفته شده اند نه wildcard آنگاه باید به SQL اطلاع دهیم که آنها را با کاراکترهای wildcard اشتباه نگیرد، برای این منظور چندین راه حل وجود دارد که در ادامه شرح خواهم داد.
فرض کنید الگوی شما این مقدار باشد:
"تنها دو کاراکتر % کاراکترهای wildcard هستند"
روش اول: ESCAPE
دو کاراکتر ] و _ علامت گذاری (بوسیله @) و توسط ماده ESCAPE به عنوان کاراکترهای معمولی شناخته شدند.
روش دوم: Bracket
دو کاراکتر ] و _ را داخل [] قرار دادیم.
روش سوم: CHARINDEX
عبارت را بدون هیچ گونه تغییری در تابع استفاده کردیم. این روش تنها زمانی مورد استفاده میتواند قرار گیرد که کاراکتر % در ابتدا یا انتهای (یا هر دو) آن قرار گرفته باشد.
تمرین: عباراتی را پیدا کنید که الگوی زیر در آن پیدا شود، فقط آخرین کاراکتر wildcard میباشد یعنی کاراکتر %
برای تست راه حلتان از متغیر جدولی زیر استفاده کنید:
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
چهار کاراکتر وجود دارد که الگوهای جستجو را توسط آنها تعریف میکنند. این کاراکترها wildcard نام دارند.
زمانی که کاراکترهای wildcard موجود در الگوی ما به عنوان کاراکترهای عادی در نظر گرفته شده اند نه wildcard آنگاه باید به SQL اطلاع دهیم که آنها را با کاراکترهای wildcard اشتباه نگیرد، برای این منظور چندین راه حل وجود دارد که در ادامه شرح خواهم داد.
فرض کنید الگوی شما این مقدار باشد:
"تنها دو کاراکتر % کاراکترهای wildcard هستند"
%[abcde_ ]%
روش اول: ESCAPE
WHERE string_value LIKE '%@[abcde@_ ]%' 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]]]%');