Привет всем,
У меня есть запрос, связанный с регулярными выражениями в SQL.
У меня есть случай, когдачасть строки должна быть извлечена из столбца.Часть этого столбца будет иметь префикс с моим столбцом A. Пожалуйста, см. Скриншот с примерами данных.Я также добавил ожидаемый результат в отдельном столбце (выделен зеленым цветом).
Сценарии:
- Теперь, если значение столбца имеет более 1 уникальногономер, который должен отображаться с нулевым значением, например: Для проверки CAN06010025 , CAN06010026 & CAN06010030 после утверждения.
В приведенной выше строке у меня есть более 1 числа (жирный шрифт), и этот случай следует игнорировать (то есть он должен дать мне нулевое значение).
Если есть только одно число, и если оно повторяется, то я должен рассмотреть этот случай и извлечь часть строки .. Например: Проект USA12: Id
USA12S001 : Требуется контакт -
USA12S001 - форма должна быть обновлена
В этом примере часть, которую я хотел извлечь, является повторяющейся, и я хочу извлечь только выделенную часть.
То же самое относится кдругие случаи также.
Я пытался с ниже sql.Сложность заключается в том, что мое Col A также может присутствовать в Col B (строка 2 на скриншоте), и этот код учитывает мою часть Col A, когда я считаю с помощью функции REGEXP_COUNT, и дает мне значение как Null.Я ожидаю, чтобы извлечь эту часть USA12S001 из столбца.
Не могли бы вы помочь в достижении этого там, где удовлетворяют два вышеуказанных условия.
SQL :
SELECT
ColA,
ColB,
case when REGEXP_COUNT(ColB,ColA) >2 THEN NULL
ELSE REPLACE(REPLACE(concat(regexp_substr(ColB,ColA||'([[:alnum:]]+\.?)'),
nvl(regexp_substr(ColB,ColA||'(\-[[:digit:]]+)'),
regexp_substr(ColB,ColA||'([[:space:]]\-[[:space:]][[:digit:]]+)'))),
' ',''),'.','')
END AS Result
FROM
table
Данные испытаний:
Col A
CAN06
USA12
USA27
HUN04
CAN05
USA24
CAN06
Col B
проверить CAN06010025, CAN06010026 и CAN06010030 после утверждения
Проект USA12: Идентификатор USA12S001: Требуется контактная форма -USA12S001- Обновляемая форма
Проект USA27: Идентификатор: USA27S001: Производитель
Для проверки идентификатора HUN04S002-HUN04S004 после даты выполнения.
Идентификатор: CAN05S005 с деталями, как CAN05S005, завершен.
Проект USA24: Идентификатор: USA24S009: Выпуск данных
«Проект: Тема CAN06S009: V2 и V3 - идентификатор CAN06S010: V1»