ОБРЕЗАТЬ или ЗАМЕНИТЬ в сохраненном поиске Netsuite

Я просмотрел множество примеров TRIM и REPLACE в Интернете, и по какой-то причине я продолжаю получать ошибки, когда пытаюсь.

Мне нужно удалить суффиксы из имен записей Netsuite при поиске сохраненных элементов. Есть три возможных суффикса: -T, -D, -S. Поэтому мне нужно превратить 24335-D в 24335, 24335-S в 24335 и 24335-T в 24335.

Вот что я пробовал и получаю ошибки:

формулы

results

Не могли бы вы мне помочь? Примечание: я не могу предполагать конкретную длину символа в начальной строке.

Пример использования: у нас уже есть поле в записях элементов под названием «Псевдоним» с удаленными суффиксами. Но я сталкивался со случаями, когда псевдоним неверен по сравнению с именем. Пример: Имя 24335-D, а псевдоним 24331-D. Я пытаюсь создать сохраненное поисковое оповещение, которое сообщит мне, когда псевдоним не совпадает с именем с удаленным суффиксом.

PS: есть ли где-нибудь, где я могу заплатить за такие вопросы быстрого поиска, которые сохранены в Netsuite по меню? Мне плохо, полагаясь на бесплатные технические советы в Интернете, но я очень ценю любую помощь, которую вы можете мне оказать!


person Jake Freeman    schedule 18.12.2020    source источник
comment
Не могли бы вы снова открыть мой вопрос?   -  person Jake Freeman    schedule 18.12.2020


Ответы (2)


Вы включаете слишком много SQL - формулы похожи на одно выражение поля результата, а не на полный оператор, поэтому нет FROM или AS. Есть еще одно место для установки имени столбца / поля результата. Один из вариантов - Regex_replace().

REGEXP_REPLACE({name},'\-[TDS]$', '')

Значение регулярного выражения:

\-    : a literal -
[TDS] : one of T D or S
$     : end of line/string

Для сравнения полей могут быть полезны формулы (числовые) с использованием оператора CASE, поскольку это упрощает сравнение результата с числом в фильтре. Например, простой, равный 1.

CASE WHEN {custitem_nickname} <> REGEXP_REPLACE({name},'\-[TDS]$', '') then 1 else 0 end

Пример формул, используемых в качестве критерия фильтра в сохраненном поиске.

person Brian    schedule 23.12.2020
comment
Большое спасибо, Брайан! Это потрясающе :) - person Jake Freeman; 28.12.2020

Вы получаете сообщение об ошибке, потому что TRIM может обрезать только один символ: см. Документ oracle https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html (последний пример).

Так что попробуйте использовать что-то вроде этого

TRIM(TRAILING '-' FROM TRIM(TRAILING 'D' FROM {entityid}))

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

person B. Assem    schedule 26.12.2020
comment
Спасибо! Я очень ценю ваш совет! - person Jake Freeman; 28.12.2020