SQL Developer Regexp_Like ищет фразу в длинной строке

Все,

Я пытаюсь найти фразу ("Observed TRD3 Ufls" в длинной строке, и у меня возникают проблемы. Иногда подстрока может быть в начале, иногда в середине, а иногда в конце. Я пытаюсь что-то вроде

    MAX(CASE WHEN REGEXP_LIKE(B.shipment,'Observed TRD3 Ufls','i') THEN 1 ELSE 0 END) OVER (PARTITION BY d.Status) AS Tag

Иногда наблюдаемое можно наблюдать, поэтому мне нужно иметь возможность получить и то, и другое, и, наконец, оно должно быть нечувствительным к регистру.

Каждый результат, который я просматриваю, всегда равен 0 вместо 1. Будем признательны за любую помощь!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
90
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо REGEXP вы можете просто использовать подобное следующим образом:

upper(B.shipment) LIKE '%OBSERVED TRD3 UFLS%'

Обратите внимание, что у меня это работает нормально, даже если совпадающая строка находится в начале, середине или конце столбца.

Спасибо! Это сработало. Я добавлю или НРАВИТСЯ «% OBSERVE TRD3 UBLS%», чтобы поймать других.

user13576801 15.12.2020 07:38

@AwFawk Это также будет соответствовать UNOBSERVED TRD3 UFLSAAA, что может быть не тем, что вам нужно.

MT0 15.12.2020 11:22

Это можно решить с помощью пробелов в начале и конце соответствующей строки.

Popeye 15.12.2020 11:25

Мне кажется, что ваша текущая логика регулярных выражений должна отображаться в предложении where:

SELECT *
FROM yourTable
WHERE REGEXP_LIKE(shipment, 'Observed TRD3 Ufls', 'i');

Ваш текущий вызов REGEXP_LIKE уже должен выполнять поиск текста без учета регистра. Обратите внимание, что, строго говоря, если вы хотите найти точный текст Observed TRD3 Ufls внутри текста, вы должны использовать границы слов:

SELECT *
FROM yourTable
WHERE REGEXP_LIKE(shipment, '(^|\s)Observed TRD3 Ufls(\s|$)', 'i');

Это будет соответствовать тексту в начале, середине или конце.

Это не сработало в заявлении о деле. :( У меня есть другие критерии того, где так нужно использовать, когда помечать эти экземпляры.

user13576801 15.12.2020 07:38

Вы не задали полный вопрос, потому что не показали полный запрос или какие-либо данные. И, в результате, получается, что я дал не полный ответ. Никаких сюрпризов.

Tim Biegeleisen 15.12.2020 07:39

Как новичок, я ценю вашу доброту. Спасибо за попытку, и мои извинения.

user13576801 15.12.2020 07:44

Другие вопросы по теме