PostgreSQL دالة SUBSTRING() مع مثال Regex

⚡ ملخص ذكي

PostgreSQL سلسلة فرعية مثالtracتقوم الدالة ts بإرجاع جزء من سلسلة نصية، باستخدام موضع بداية وطول اختياريين، كما أنها تطابق النص مع تعبير POSIX العادي لاستخراج أنماط مثل الأرقام أو الرموز.

  • 📋 بناء الجملة: تقوم الدالة substring( string [from start] [for length] ) بإرجاع جزء من السلسلة المصدرية.
  • 1️⃣ مواقف: تبدأ مواضع الأحرف من 1، وحذف الطول يؤدي إلى نهاية السلسلة.
  • 🔎 التعبير النمطي: SUBSTRING(string FROM pattern) extracts هو النص الأول الذي يطابق تعبيرًا نمطيًا من نوع POSIX.
  • 🧮 الحبوping: لا تُرجع المجموعة الموجودة بين قوسين في النمط سوى ذلك الجزء الذي تم التقاطه من المطابقة.
  • 🖥️ pgAdmin: يتم تنفيذ كل استعلام عن سلسلة فرعية بنفس الطريقة داخل محرر الاستعلامات في pgAdmin.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم المساعدات المدعومة بالذكاء الاصطناعي بإنشاء وشرح أنماط التعبيرات النمطية للحصول على أمثلة دقيقة للسلاسل الفرعيةtracنشوئها.

PostgreSQL دالة SUBSTRING باستخدام التعبيرات النمطية

ما هي تفاصيل PostgreSQL سلسلة فرعية؟

استخدم PostgreSQL تساعدك دالة استخراج السلسلة الفرعية في استخراجtracتقوم هذه الدالة بإرجاع جزء من سلسلة نصية. فبدلاً من إرجاع السلسلة كاملة، تُرجع جزءًا منها فقط، وهو أمر مفيد لتقليص حجم التعليمات البرمجية وقراءة الحقول ذات العرض الثابت.

بناء الجملة

استخدم PostgreSQL تأخذ وظيفة substring بناء الجملة التالي:

substring( string [from starting_position] [for length] )

المعاملات

تُستخدم المعلمات التالية مع دالة استخراج السلسلة الفرعية:

سلسلة السلسلة المصدر التي يكون نوع بياناتها هو varchar وchar وstring وما إلى ذلك.
start_position مُعامل اختياري. يُشير إلى المكان الذي يكون فيه extracسيبدأ تحليل السلسلة. إذا حذفت هذا المعامل، فسيكون المثالtracيبدأ التسلسل من الموضع 1، وهو الحرف الأول في السلسلة.
الطول مُعامل اختياري. يُشير إلى عدد الأحرف المراد عرضهاtracted من السلسلة. إذا حذفت هذا المعامل، فإن الدالة extracts من الموضع_البداية إلى نهاية السلسلة.

أمثلة

في هذا المثال، نريد أن نشرحtracالأحرف الأربعة الأولى من الكلمة Guru99:

SELECT substring('Guru99' for 4);

سوف يقوم الأمر بإرجاع ما يلي:

PostgreSQL سلسلة فرعية

لم نحدد نقطة البداية، لذا فإن السابقtracبدأ استخراج السلسلة الفرعية من الموضع 1. تم استخراج أربعة أحرفtracted لإعادة النتيجة أعلاه.

يوضح المثال التالي كيفية تحديد موضع البداية:

SELECT substring('Guru99' from 1 for 4);

سوف يقوم الأمر بإرجاع ما يلي:

PostgreSQL سلسلة فرعية

لقد حددنا أن السابقtracيجب أن يبدأ استخراج السلسلة الفرعية من الموضع 1، ويجب أن تكون 4 أحرفtracتيد.

دعونا نخرجtract 99 من السلسلة Guru99:

SELECT substring('Guru99' from 5);

سوف يقوم الأمر بإرجاع ما يلي:

PostgreSQL سلسلة فرعية

حددنا موضع البداية برقم 5. نظرًا لأن عدد الأحرف المطلوب هوtracلم يتم تحديد تيد، السابقtracامتدت tion إلى نهاية السلسلة.

هنا مثال آخر:

SELECT substring('Guru99' from 5 for 2);

سوف يقوم الأمر بإرجاع ما يلي:

PostgreSQL سلسلة فرعية

بدأنا السابقtracتم حذف حرفين من الموضع 5.tracتيد.

خذ بعين الاعتبار جدول الكتاب الموضح أدناه:

PostgreSQL جدول الكتب الفرعي

نريد الحصول على فكرة تقريبية عن اسم كل كتاب. يمكننا أن نستنتجtract فقط أول 15 حرفًا من عمود الاسم في الجدول:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

سوف يقوم الأمر بإرجاع ما يلي:

PostgreSQL نتيجة السلسلة الفرعية

لدينا الآن فكرة تقريبية عن اسم كل كتاب.

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

In PostgreSQLيمكنك الخروجtracدالة substring التي تطابق تعبيرًا نمطيًا محددًا في نظام POSIX. في هذه الحالة، تستخدم دالة substring الصيغة التالية:

SUBSTRING(string FROM matching_pattern)

or

SUBSTRING(string, matching_pattern);

فيما يلي شرح للمعلمات المذكورة أعلاه. السلسلة هي سلسلة المصدر، والتي نوع البيانات هي varchar، char، string، وما إلى ذلك. المطابقة_النمط هي النمط المستخدم للبحث في السلسلة.

أمثلة

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

سوف يقوم الأمر بإرجاع ما يلي:

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

سلسلة الإدخال لدينا هي "عمرك 22". في النمط، نبحث عن نمط رقمي؛ وعندما يتم العثور عليه، تقوم دالة السلسلة الفرعية باستخراجه.tracحرفان فقط.

كيفية مطابقة السلاسل الفرعية باستخدام pgAdmin

والآن، دعونا نرى كيف تُنفَّذ هذه الإجراءات باستخدام pgAdmin. يمكن تنفيذ الاستعلامات التي لا تتطلب قاعدة بيانات مباشرةً من نافذة محرر الاستعلامات. ما عليك سوى القيام بما يلي:

الخطوة 1) قم بتسجيل الدخول إلى حساب pgAdmin الخاص بك.

الخطوة 2) في لوحة تحكم pgAdmin، انقر فوق رمز أداة الاستعلام.

مطابقة السلاسل الفرعية باستخدام pgAdmin

سيتم فتح نافذة محرر الاستعلام.

الخطوة 3) اكتب الاستعلام التالي في نافذة المحرر.

SELECT substring('Guru99' for 4);

الخطوة 4) انقر على أيقونة التنفيذ لتنفيذ الاستعلام.

مطابقة السلاسل الفرعية باستخدام pgAdmin

الخطوة 5) تم تنفيذ الاستعلام. يجب أن يُرجع ما يلي:

مطابقة السلاسل الفرعية باستخدام pgAdmin

مثال 2:

SELECT substring('Guru99' from 1 for 4);

ينبغي أن يعود ما يلي:

مطابقة السلاسل الفرعية باستخدام pgAdmin

هنا هو المثال التالي:

SELECT substring('Guru99' from 5);

ينبغي أن يعود ما يلي:

مطابقة السلاسل الفرعية باستخدام pgAdmin

مثال 3:

SELECT substring('Guru99' from 5 for 2);

ينبغي أن يعود ما يلي:

مطابقة السلاسل الفرعية باستخدام pgAdmin

الآن، دعونا ننفذ المثال باستخدام جدول الكتب في قاعدة البيانات التجريبية:

الخطوة 1) قم بتسجيل الدخول إلى حساب pgAdmin الخاص بك.

الخطوة 2) من شريط التنقل على اليسار، انقر فوق قواعد البيانات، ثم انقر فوق عرض توضيحي.

مطابقة السلاسل الفرعية باستخدام pgAdmin

الخطوة 3) اكتب الاستعلام في محرر الاستعلام:

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

الخطوة 4) انقر فوق الزر "تنفيذ".

مطابقة السلاسل الفرعية باستخدام pgAdmin

ينبغي أن يعود ما يلي:

PostgreSQL نتيجة السلسلة الفرعية

لدينا الآن فكرة أساسية عن اسم كل كتاب.

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

لإنجاز نفس الشيء على pgAdmin، قم بما يلي:

الخطوة 1) قم بتسجيل الدخول إلى حساب pgAdmin الخاص بك.

الخطوة 2) انقر على أيقونة أداة الاستعلام.

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

سيتم فتح نافذة محرر الاستعلام.

الخطوة 3) اكتب الاستعلام التالي في نافذة المحرر.

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

الخطوة 4) انقر على أيقونة التنفيذ لتنفيذ الاستعلام.

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

ينبغي أن يعود ما يلي:

مطابقة السلاسل الفرعية مع التعبير العادي لـ SQL

قم بتنزيل قاعدة البيانات المستخدمة في هذا البرنامج التعليمي

الأسئلة الشائعة

الدالة SUBSTR هي اختصار للدالة SUBSTRING، وتُعيد جزءًا من سلسلة نصية. تدعم الدالة SUBSTRING أيضًا الكلمات المفتاحية FROM و FOR القياسية في لغة SQL، بالإضافة إلى التعبيرات النمطية POSIX، بينما تقبل الدالة SUBSTR وسيطات الموضع والطول مفصولة بفواصل فقط.

PostgreSQL تعتمد الدالة SUBSTRING على الترقيم من 1، لذا فإن الحرف الأول يكون في الموضع 1 وليس 0. يؤدي تمرير موضع بداية 1 إلى إرجاع السلسلة من الحرف الأول فصاعدًا.

عندما لا يتطابق نمط POSIX مع أي شيء، تُرجع الدالة SUBSTRING قيمة NULL بدلاً من سلسلة نصية فارغة. يتيح لك اختبار النتيجة باستخدام IS NULL معالجة الصفوف التي لا يتطابق فيها النمط المتوقع.

استخدم تعبيرًا نمطيًا يلتقط ما يلي الحرف. على سبيل المثال، تُعيد الدالة SUBSTRING(email FROM '@(.*)') كل ما يلي علامة @، مما يُعطيك جزء النطاق من كل عنوان بريد إلكتروني.

استخدم دالة SUBSTRING عندما تحتاج إلى أول نص مطابق كقيمة بسيطة. اختر دالة regexp_matches() عندما تريد إرجاع كل تطابق أو مجموعات التقاط متعددة كمصفوفة، لأن دالة SUBSTRING تُرجع أول تطابق فقط.

تقوم مساعدات الذكاء الاصطناعي مثل GitHub Copilot بتحويل الوصف باللغة الإنجليزية البسيطة إلى نمط POSIX، وشرح ما يطابقه كل رمز، واقتراح سلاسل اختبار، مما يقلل من التجربة والخطأ عند إنشاء أمثلة السلاسل الفرعيةtracاستفسارات tion.

نعم. صف الجزء من النص الذي تريده، وسيقوم مساعد الذكاء الاصطناعي بصياغة استدعاء SUBSTRING مع المواضع الصحيحة أو التعبير النمطي، والذي يمكنك تشغيله وتحسينه داخل pgAdmin.

نعم، مطابقة السلاسل الفرعية POSIX حساسة لحالة الأحرف افتراضيًا. للمطابقة بغض النظر عن حالة الأحرف، قم بتحويل كلا المدخلين إلى أحرف صغيرة، على سبيل المثال SUBSTRING(lower(name) FROM lower(pattern))، بحيث تُعامل الأحرف الكبيرة والصغيرة بنفس الطريقة.

تلخيص هذه التدوينة بـ: