2

我在互联网上查看了很多关于 TRIM 和 REPLACE 的示例,由于某种原因,我在尝试时不断出错。

我需要在保存的项目搜索中从我的 Netsuite 项目记录名称中去除后缀。有三种可能的后缀:-T、-D、-S。所以我需要把24335-D变成24335,把24335-S变成24335,把24335-T变成24335。

这是我尝试过的以及我得到的错误:

公式

结果

你能帮我吗?注意:我不能假设起始字符串的特定字符长度。

用例:我们已经在项目记录上有一个名为 Nickname 的字段,去掉了后缀。但是我遇到过昵称与名称相比不正确的情况。例如:名字是 24335-D,但昵称是 24331-D。我正在尝试构建一个已保存的搜索警报,该警报会在任何时候告诉我昵称不等于后缀剥离的名称。

PS:我可以在任何地方支付快速点菜 Netsuite 保存的搜索问题吗?依靠免费的互联网技术建议我感觉很糟糕,但我非常感谢你能给我的任何帮助!

4

2 回答 2

1

您包含太多 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

在保存的搜索中用作过滤条件的示例公式。

于 2020-12-23T21:45:58.940 回答
1

您收到错误,因为 TRIM 只能修剪一个字符:请参阅 oracle doc https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html(最后一个示例)。

所以尝试使用这样的东西

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

请始终记住,保存的搜索作为 Oracle SQL 查询运行,因此 Oracle SQL 文档可以帮助您了解如何使用可用函数。

于 2020-12-26T13:39:48.077 回答