"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استخراج القيمة التاسعة بشكل موثوق من قائمة مفصولة بفاصلة في SQL ، التعامل مع الفرق؟

كيفية استخراج القيمة التاسعة بشكل موثوق من قائمة مفصولة بفاصلة في SQL ، التعامل مع الفرق؟

نشر في 2025-02-12
تصفح:136

How to Reliably Extract the Nth Value from a Comma-Separated List in SQL, Handling Nulls?
() ، يمكن أن يكون التعامل مع القيم الفارغة أمرًا صعبًا. فيما يلي فحص مفصل للمشكلة وحل شامل.

أولاً ، ضع في اعتبارك السيناريو التالي: '[^،]' ، 1 ، 2) البيانات من مزدوج د - 2

يسترجع هذا الاستعلام القيمة غير الفريدة الثانية ("2") من القائمة باستخدام التعبير العادي [^،]. ومع ذلك ، عندما تكون القيمة الثانية خالية ، يقوم الاستعلام بإرجاع العنصر الثالث:

sql> حدد regexp_substr ('1 ، ، 3،4،5،6' ، '[^،]' ، 1 ، 2 ) بيانات من مزدوج د - 3

لمعالجة هذه المشكلة ، هناك حاجة إلى regex أكثر مرونة للسماح بأحرف اختيارية:
SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
2
^،]*'، 1 ، 4) البيانات من مزدوج د - 3

ومع ذلك ، فإن هذا regex يفشل أيضًا في الأرقام التي تجاوزت الفارغ. 4،5 '،' (.*؟) (، | $) '، 1 ، 2 ، null ، 1)
SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
2
. والنتيجة هي:

البيانات ----
SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
2
لتغليف هذا الحل في وظيفة قابلة لإعادة الاستخدام ، ضع في اعتبارك الكود التالي:

يبدأ return regexp_substr (string_in ، '(.*؟) (\' || delimiter_in || '| $)' ، 1 ، element_in ، null ، 1) ؛ end get_list_element ؛

يمكن تسمية هذه الوظيفة على هذا النحو:

REGEX_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3