() ، يمكن أن يكون التعامل مع القيم الفارغة أمرًا صعبًا. فيما يلي فحص مفصل للمشكلة وحل شامل.
أولاً ، ضع في اعتبارك السيناريو التالي: '[^،]' ، 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