مجموعة MySQL Concat للأوتار

Mysql Group Concat Strings



دالة GROUP _CONCAT هي دالة تجميعية GROUP BY تسمح لك بربط قيم الأعمدة من صفوف متعددة في حقل واحد. تقوم بإرجاع سلسلة إذا كانت المجموعة المحددة تحتوي على قيمة عمود واحدة أو لا تحتوي على قيمة فارغة وتعيد قيمة NULL إذا لم يتم العثور على أي منها.

سيعلمك هذا البرنامج التعليمي كيفية استخدام وظيفة MySQL GROUP_CONCAT () لدمج سلاسل من مجموعة بها عدة خيارات.







الاستخدام الأساسي

كما ذكرنا سابقًا ، تُرجع هذه الدالة نتيجة سلسلة بقيم القيم المتسلسلة غير الفارغة أو القيمة NULL في حالة عدم وجودها.



الصيغة العامة هي:



GROUP_CONCAT ([ خامد ]إكسبر[وإكسبر ...]
[ ترتيب حسب إكسبر
[ ASC | تنازلي ] [وcol_name ...]]
[SEPARATOR str_val])

تفسير

من الصيغة أعلاه ، يمكنك أن ترى أن الدالة GROUP_CONCAT تستخدم عبارات MySQL وقيودًا لتحديد الخيارات المختلفة:





  1. خامد: تساعد جملة DISTINCT على إزالة القيم المكررة في المجموعة المحددة قبل عملية التسلسل. ضع في اعتبارك برنامجنا التعليمي الذي يشرح MySQL DISTINCT لفهم كيفية عمله.
  2. ترتيب حسب: الجملة التالية هي ORDER BY التي تساعد على فرز القيم بترتيب محدد. يمكن أن يكون الترتيب تصاعديًا أو تنازليًا. إذا لم يتم تحديد أي ترتيب ، تقوم MySQL بتنسيق القيم بترتيب تصاعدي.
  3. فاصل : يحدد هذا البند السلسلة الحرفية التي تم إدراجها بين قيم المجموعة عند عملية التسلسل. بشكل افتراضي ، تستخدم MySQL فاصلة (،) لفصل القيم.

ملاحظة: نتيجة السلسلة التي تم إنشاؤها بواسطة دالة MySQL GROUP_CONCAT () محدودة بطول القيمة المحددة في المتغير group_concat_max_len. يتم تحديد هذه القيمة في النظام ولها قيمة افتراضية تبلغ 1024. يمكنك تغيير هذه القيمة بشكل عام أو تعيينها في الجلسة التي تريدها.

يضع [ عالمي | حصة ]group_concat_max_len= القيمة ؛

ضع في اعتبارك المرجع أدناه لمعرفة المزيد:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

كيف يعمل: مثال

اسمح لي باستخدام مثال بسيط لشرح كيفية عمل وظيفة GROUP_CONCAT (). ضع في اعتبارك الجدول الذي يحتوي على حقل لـ CHAR على النحو التالي:

يزيد طاولة concat ( القيمة شار )؛

دعنا ندرج القيم في الجدول كما هو موضح في الاستعلام أدناه:

إدراج إلى concat ( القيمة ) القيم ('ح')و('و')و('ال')و('ال')و('أو')؛

إذا أجرينا عملية GROUP_CONCAT أساسية على القيم الموجودة في الجدول ، فسنحصل على نتيجة سلسلة كما هو موضح أدناه:

تحديد GROUP_CONCAT ( خامد القيمة ترتيب حسب القيمة ASC فاصل') من عند concat ؛

القيمة الناتجة هي:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( خامد القيمة ترتيب حسب القيمة ASC فاصل') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1صف في يضع (0.01ثانية)

هل تريد طريقة أخرى لفهم ما حدث للنتيجة المذكورة أعلاه؟

نبدأ بإزالة جميع القيم المكررة بسبب جملة MySQL DISTINCT التي تزيل قيمة L.

بعد ذلك ، ننتقل إلى ترتيب تصاعدي ORDER BY كما هو محدد في (ASC) ، والذي يغير السلسلة في شكل

مرحبا->EHLO

أخيرًا ، نقوم بتنفيذ عملية التسلسل باستخدام مسافة كفاصل للقيم المحددة ، مما ينتج عنه السلسلة E H L O من {H ، E ، L ، L O}.

أمثلة على حالات الاستخدام

دعونا نأخذ قاعدة بيانات حقيقية ونستخدمها لتوضيح كيف يمكننا تنفيذ وظيفة GROUP_CONCAT (). في هذا المثال ، سنستخدم قاعدة بيانات Sakila ، وعلى وجه التحديد ، جدول العناوين من قاعدة بيانات Sakila.

ضع في اعتبارك المورد أدناه لتنزيل قاعدة البيانات لأمثلة لديك:

https://dev.mysql.com/doc/index-other.html

في جدول العناوين في قاعدة بيانات Sakila ، ستحصل على عمود الحي. يمكننا فصل جميع المناطق الفريدة بواسطة أنبوب كما هو موضح في الاستعلام أدناه:

تحديد GROUP_CONCAT ( خامد منطقة ترتيب حسب المنطقة SEPARATOR'|') من عند العنوان حد 5؛

سيعرض الاستعلام أعلاه جميع مناطق DISTINCT وترتيبها بترتيب تصاعدي مفصولة بأنبوب.

ملاحظة: الدالة GROUP_CONCAT () هي دالة تجميعية. لذلك ، من الضروري تحديد جملة ORDER BY داخل الوظيفة وليس في عبارة SELECT.

استنتاج

وظيفة MySQL GROUP_CONCAT () التي تمت مناقشتها في هذا البرنامج التعليمي هي وظيفة مفيدة تسمح لك بإنشاء بيانات فريدة ومرتبة ومنظمة من جدول قد يحتوي على بيانات مكررة وغير مرتبة.

ضع في اعتبارك المستندات أو برامج MySQL التعليمية الأخرى لمعرفة المزيد.