«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как надежно извлечь n-й значение из списка, разделенного запятыми в SQL, обрабатывая нули?

Как надежно извлечь n-й значение из списка, разделенного запятыми в SQL, обрабатывая нули?

Опубликовано в 2025-02-12
Просматривать:877

How to Reliably Extract the Nth Value from a Comma-Separated List in SQL, Handling Nulls?

Решение REGEX для выбора конкретного значения из списка, разделенного COMPA, с помощью Nulls

при извлечении nth значения из списка с использованием COMPA, используя REGEXP_SUBSTR (), обработка нулевых значений может быть сложной. Вот подробное изучение проблемы и всеобъемлющего решения.

сначала рассмотрите следующий сценарий:

SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
2

этот запрос успешно получает второе не нулевое значение ("2") из списка, используя регулярное выражение [^,]. Однако, когда второе значение равна нулю, запрос возвращает третий элемент:

SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,] ', 1, 2) data
from dual;

D
-
3

. Чтобы решить эту проблему, необходимо более гибкое повторное включение для предоставления дополнительных символов:

SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data
from dual;

D
-
3

, однако, эта режима также не удается для чисел после NULL. 4,5 ',' (.*?) (, | $) ', 1, 2, null, 1)

] Эта регуляция захватывает данные до n -й вступления в запяту или конец строки Полем Результат:

REGEX_SUBSTR('1,,3,4,5', '(.*?)(,|$)', 1, 2, NULL, 1)

, чтобы инкапсулировать это решение в повторную функцию, рассмотрите следующий код:

]
Data
----

эта функция можно назвать подобным Выбирается конкретный элемент, это решение предоставляет надежный и элегантный метод извлечения значений из списков, разделенных запятыми, в Oracle SQL.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3