TRIM или REPLACE в сохраненном поиске Netsuite

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

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

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

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

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

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

Не могли бы вы снова открыть мой вопрос?

Jake Freeman 18.12.2020 21:29
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
1
3 502
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Большое спасибо, Брайан! Это потрясающе :)

Jake Freeman 28.12.2020 00:55

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

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

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

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

Спасибо! Я очень ценю ваш совет!

Jake Freeman 28.12.2020 00:55

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