أساسيات خادم SQL: استخدام مشغل SQL LIKE

العامل LIKE في T-SQL هو واحد من أكثر الإضافات فائدة للبيانات SQL SELECT. الأخير يسترد مجموعة نتائج، ويمكنك بسهولة تصفية النتائج باستخدام عوامل المساواة وWHERE clause لاختيار شروط معينة. ولكن ماذا عن تلك الأوقات التي قد ترغب فيها في اختيار الصفوف التي تعتمد على القيم الجزئية؟ هنا تأتي عبارة SQL LIKE لتلعب دورها، وسأريك كيفية استخدامها في هذا البرنامج التعليمي.

بنية SQL LIKE

يمكنك رؤية البنية الأساسية لعامل LIKE في القائمة التالية:

الإعلان

  • أولاً، يتم توفير التعبير الذي ترغب في تطابقه. وعادةً ما يكون هذا اسم العمود.
  • بعد ذلك، يمكنك تحديد اختيارياً NOT لجعل هذا التعبير يعمل لجميع الشروط التي لا تتطابق. استخدام شرط NOT LIKE ليس الطريقة الأكثر شيوعاً لاستخدام عامل LIKE.
  • ثم تحتاج إلى تزويد النمط الذي يجب مطابقته. يمكن أن يكون هذا حرفيًا أو يمكن أن يشمل أحرف التعبئة التي تجعل عملية المطابقة أكثر مرونة.
  • يمكن أن يتبع ذلك حرف الهروب إذا كان مرغوبًا فيه والذي يمكن استخدامه للمساعدة في البحث عن أحرف التعبئة.
  • إذا لم يكن أي من الحجج نوع بيانات سلسلة حرفية، سيقوم SQL Server بتحويله إلى نوع بيانات سلسلة حرفية.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

SQL LIKE وأحرف التعبئة

قبل أن نتعمق في التفاصيل، يجب أن تعرف أن مطابقة نمط SQL LIKE يمكن أن تشمل الأحرف العادية بالإضافة إلى أحرف التعبئة. تتيح أحرف التعبئة لك اختيار سلسلة حرفية معينة تتطابق مع نمط التعبئة.

في عملية المطابقة، يجب أن تطابق الأحرف العادية الأحرف المحددة في السلسلة الحرفية. ومع ذلك، يمكن لأحرف التعبئة أن تطابق أي شظايا من السلسلة الحرفية. استخدام أحرف التعبئة يجعل عامل LIKE أكثر مرونة من عوامل المقارنة المتعلقة بالمساواة ( = و != ) للسلاسل الحرفية.

يقبل عامل LIKE أربعة أنواع مختلفة من أحرف التعبئة. كل حرف تعبئة يؤدي وظيفة مقارنة مختلفة، ويمكنك التعرف على المزيد في الجدول التالي.

Wildcard character Description
% (percent sign) Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range [a-f] or set [abcdef].
[^] Any single character not within the specified range [^a-f] or set [^abcdef].
The four different types of wildcard characters to use with the LIKE operator.

يُرجع عامل LIKE TRUE إذا تطابق match_expression مع النمط المحدد. دعونا نستخدم بعض الأمثلة لتوضيح كيفية استخدام عامل SQL LIKE مع قاعدة البيانات العينة AdventureWorksLT2019.

إعلان

مطابقة أحرف التعبئة المتعددة

الرمز المميز % يمثل صفر أو أكثر من الحروف. الاستعلام التالي يسترد جميع الصفوف من جدول ‘Person.Person’ حيث يبدأ ‘LastName’ بالحرف ‘A’.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

البحث بحرف واحد

الرمز المميز _ يمثل حرف واحد. الاستعلام المثالي التالي يسترد جميع الصفوف من جدول ‘SalesLT.Product’ حيث ‘Name’ يحتوي على أربعة أحرف من أي نوع تليها علامة ناقص.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

البحث برموز مميزة لمجموعة من الحروف

[] wildcard يمثل أي حرف واحد ضمن النطاق أو المجموعة المحددة. تسترجع البيانات النصية التالية من جدول ‘SalesLT.Product’ جميع الصفوف حيث يبدأ ‘الاسم’ بـ ‘B’، ‘C’، أو ‘D’.

USE AdventureWorksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[BCD]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

Wildcard matching for a range of characters

يمكنك أيضًا استخدام شرط LIKE لدعم عمليات البحث في النطاق. يسترجع هذا الاستعلام الأسماء الأخيرة التي تنتهي بـ ‘ee’ وتبدأ بأي حرف واحد بين الحروف ‘C’ و ‘L’.

إعلان

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

Excluding characters that are not part of the specified set

[^] wildcard يمثل أي حرف واحد ليس ضمن النطاق أو المجموعة المحددة. يسترجع الاستعلام التالي جميع الصفوف من جدول ‘SalesLT.Product’ حيث لا يبدأ ‘الاسم’ بـ ‘A’، ‘B’، أو ‘C’.

USE AdventureworksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[^ABC]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

استخدام شروط متعددة لمطابقة البدائل

يمكن أيضًا دمج عبارة LIKE مع عدة بدائل في استعلام واحد. يستخدم الاستعلام التالي عدة بدائل SQL لاسترداد جميع الصفوف من جدول ‘Person.Person’ حيث يحتوي ‘FirstName’ على الحرف ‘a’ ويحتوي ‘LastName’ على أي حرف تليه ‘l’.

USE AdventureworksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

البحث عن أحرف بدائل

تضيف مطابقة البدائل الكثير من القوة والمرونة إلى عامل LIKE. ومع ذلك، قد تتساءل كيف يمكنك استخدام LIKE لمطابقة أحد هذه الأحرف بدائل بحد ذاتها.

للقيام بذلك، يمكنك وضع الحرف بدائل بين قوسين، مما يتيح لك استخدام الحرف بدائل كحرف حرفي. يمكنك رؤية بعض الأمثلة في الجدول التالي.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • المثال الأول يطابق الرقم 2 تليه الحرف بدائل.
  • المثال الثاني يطابق الحرف السفلي تليه الحرف m.
  • يتم استخدام المثال الثالث لمطابقة أحرف القوس المربع.
(Image credit: Petri/Michael Otey)

تعزز عبارة LIKE SQL البيان SELECT SQL

يجب أن تفهم الآن كيف يمكنك استخدام مشغل SQL LIKE لتعزيز قوة ومرونة عبارة SQL SELECT. هنا، أظهرت لك أيضًا كيفية استخدام عبارة LIKE مع مختلف أحرف الاستعلام البارزة. بين مطابقة عدة أحرف استعلام بارزة، إجراء مطابقة لحرف واحد، مطابقة مجموعة من الأحرف، أو استبعاد الأحرف من النتائج، لديك فعلا الكثير من الاحتمالات في متناول يدك.

Source:
https://petri.com/sql-like/