كيفية تقسيم سلسلة بواسطة حرف محدد في SQL Server؟



جرب أداة القضاء على المشاكل

في هذه المقالة ، سنناقش عدة طرق لتقسيم قيمة السلسلة المحددة. يمكن تحقيق ذلك باستخدام طرق متعددة بما في ذلك.



  • استخدام الدالة STRING_SPLIT لتقسيم السلسلة
  • إنشاء دالة معرّفة من قبل المستخدم بقيمة جدول لتقسيم السلسلة ،
  • استخدم XQuery لتقسيم قيمة السلسلة وتحويل سلسلة محددة إلى XML

بادئ ذي بدء ، نحتاج إلى إنشاء جدول وإدخال البيانات فيه والتي سيتم استخدامها في جميع الطرق الثلاث. يجب أن يحتوي الجدول على صف واحد مع معرف الحقل وسلسلة بأحرف محددة بداخله. أنشئ جدولاً باسم 'student' باستخدام الكود التالي.



إنشاء طالب جدول (ID INT IDENTITY (1، 1)، student_name VARCHAR (MAX))

أدخل أسماء الطلاب مفصولة بفواصل في صف واحد عن طريق تنفيذ الكود التالي.



أدخل قيمة الطالب (اسم الطالب) ('مونروي ، مونتانيز ، مارولاهاكيس ، نيغلي ، أولبرايت ، جاروفولو ، بيريرا ، جونسون ، فاغنر ، كونراد')

إنشاء الجدول وإدخال البيانات

تحقق مما إذا كان قد تم إدخال البيانات في الجدول أم لا باستخدام الكود التالي.

اختر * من الطالب

تحقق مما إذا كان قد تم إدراج البيانات في جدول 'الطالب'



الطريقة الأولى: استخدم الدالة STRING_SPLIT لتقسيم السلسلة

في SQL Server 2016 ، 'STRING_SPLIT' تم تقديم الوظيفة التي يمكن استخدامها مع مستوى التوافق 130 وما فوق. إذا كنت تستخدم إصدار 2016 SQL Server أو إصدارًا أحدث ، فيمكنك استخدام هذه الوظيفة المدمجة.

علاوة على ذلك 'STRING_SPLIT' تُدخل سلسلة تحتوي على سلاسل فرعية محددة وتُدخل حرفًا واحدًا لاستخدامه كمحدد أو فاصل. تقوم الوظيفة بإخراج جدول أحادي العمود تحتوي صفوفه على السلاسل الفرعية. اسم عمود الإخراج هو ' القيمة' . تحصل هذه الوظيفة على معلمتين. المعلمة الأولى عبارة عن سلسلة والمعاملة الثانية هي حرف محدد أو فاصل على أساسه يتعين علينا تقسيم السلسلة. يحتوي الإخراج على جدول أحادي العمود حيث توجد سلاسل فرعية. تم تسمية عمود الإخراج هذا 'القيمة' كما نرى في الشكل أدناه. وعلاوة على ذلك، فإن 'STRING SPLIT' ترجع الدالة table_valued جدولًا فارغًا إذا كانت سلسلة الإدخال NULL.

مستوى توافق قاعدة البيانات:

كلقاعدة البياناتيكونمتصلمعإلىالتوافقمستوى.ذلكتمكنالقواعد بياناتسلوكإلىيكونمتوافقمع اليكونمعينSQLالخادمالإصدارعليهأشواطعلى.

الآن سوف نسمي وظيفة “string_split” لتقسيم السلسلة المفصلة بفواصل. لكن مستوى التوافق كان أقل من 130 ومن ثم تم رفع الخطأ التالي. 'اسم الكائن غير صالح' SPLIT_STRING '

يظهر خطأ إذا كان مستوى توافق قاعدة البيانات أقل من 130 'اسم الكائن غير صالح split_string'

وبالتالي ، نحتاج إلى ضبط مستوى توافق قاعدة البيانات على 130 أو أعلى. لذلك سوف نتبع هذه الخطوة لتعيين مستوى توافق قاعدة البيانات.

  • بادئ ذي بدء ، قم بتعيين قاعدة البيانات على 'single_user_access_mode' باستخدام الكود التالي.
ALTER DATABASE SET SINGLE_USER
  • ثانيًا ، قم بتغيير مستوى توافق قاعدة البيانات باستخدام الكود التالي.
ALTER DATABASE SET COMPATIBILITY_LEVEL = 130
  • أعد قاعدة البيانات إلى وضع الوصول متعدد المستخدمين باستخدام التعليمات البرمجية التالية.
ALTER DATABASE SET MULTI_USER
استخدم [الرئيسي] تغيير قاعدة البيانات [bridge_centrality] تعيين SINGLE_USER ALTER DATABASE [bridge_centrality] SET COMPATIBILITY_LEVEL = 130 ALTER DATABASE [bridge_centrality] تعيين MULTI_USER GO

سيكون الإخراج:

قم بتغيير مستوى التوافق إلى 130

الآن قم بتشغيل هذا الرمز للحصول على النتيجة المطلوبة.

DECLAREstring_value VARCHAR (MAX) ، SET @ string_value = 'Monroy و Montanez و Marolahakis و Negley و Albright و Garofolo و Pereira و Johnson و Wagner و Conrad' SELECT * FROM STRING_SPLIT (string_value،