السلام عليكم ورحمة الله وبركاته
أود الحديث هنا عن الرموز الخاصة ( Wildcards ) التي يمكن استخدامها مع التعبير أو المعامل LIKE للبحث في الحقول النصية.
لتوضيح الأفكار سنستعين بالجدول التالي :
CREATE TABLE dbo.Jobs(
JobID int IDENTITY(1,1) NOT NULL,
JobTitle varchar(100) NULL)
ثم هذه بعض البيانات للتجربة :
insert into Jobs values('Cheif Executive Officer')
insert into Jobs values('Cheif Financial Officer')
insert into Jobs values('Control Specialist')
insert into Jobs values('Design Engineer')
insert into Jobs values('Engineering Manager')
insert into Jobs values('European Sales Manager')
1- الرمز ( % ) : هذه الرمز ربما يكون الأكثر شيوعاً واستخداماً وهو يقوم مقام أي عدد من حروف النص المراد البحث فيه حسب موقع وجود الرمز ( يشمل هذا أيضاً أن يكون عدد الحروف صفر ).
• مثلاً at% يمكن أن تظهر أي من الكلمات التالية : at , that , fat , atom
• وبالنسبة للجدول أعلاه يكون للجملة التالية :
Select * from Jobs Where JobTitle Like '%er'
النتيجة التالية :
ويكون للجملة التالية :
Select * from Jobs Where JobTitle Like '%Engineer%'
النتيجة التالية :
2- الرمز ( _ ) : وهو يقوم مقام مقام حرف واحد فقط من حروف النص المراد البحث فيه .
• مثلاً : at_ يمكن أن تظهر fat , cat , match لكن ليس that , at
• وبالنسبة للجدول أعلاه يكون للجملة التالية :
Select * from Jobs Where JobTitle Like '_e%'
النتيجة التالية :
لاحظ أن النتيجة لم يظهر فيها Chief Executive Officer مثلاً لوجود حرفين قبل الحرف e ، وكذلك لم تظهر Engineering Manager لوجود خمسة أحرف قبل e .
3- الرمز ( [ ] ) : يقوم مقام الحروف الواقعة بين القوسين سواء كانت منفصلة أو كانت تعبيراً عن مدى أو نطاق معين.
• مثلاً [a-d ] تدخل فيها الحروف الواقعة بين a و d أي : a , b , c, d ولكن [a,b,d] تشمل الحروف المذكورة بين القوسين فقط.
• وبالنسبة للجدول أعلاه يكون للجملة التالية :
Select * from Jobs Where JobTitle Like '[C,E]%'
النتيجة التالية :
لاحظ أن النتيجة أظهرت أي بيان بدأ بـ C أو E فقط.
4- الرمز ( ^ ) : يستخدم مع التعبير السابق ولكن للنفي .
• مثلاً [a,d^] تعني ألا يكون الحرفان المذكوران جزءاً من النتيجة
• وبالنسبة للجدول أعلاه يكون للجملة التالية :
Select * from Jobs Where JobTitle Like '[^CD]%'
النتيجة التالية :
بقيت ملاحظة مهمة في هذا السياق وهي أن استخدام هذه الرموز يؤثر على استخدام الــ Indexes بشكل سلبي لذلك يفضل استخدامها عند الحاجة إليها فقط.
أرجو أن يكون ما كتب أعلاه مفيداً وواضحاً. والله أعلم