NetSuite中的SQL函数保存了搜索结果-如何修复这些函数?

时间:2019-04-30 03:25:50

标签: sql netsuite

我试图在NetSuite保存的搜索结果输出的背景下实现以下目标。

1。删除第一个连字符(-)或冒号(:)之后的所有字符,包括其中两个字符之前的空格。

例如

输入:测试123-xyz:123

这应该输出为 test 123 ->,甚至应该删除连字符前面的空格。

我尝试了以下两个代码

SUBSTR({custitem123}, 0, INSTR({custitem123}, '-')-1) SUBSTR({custitem123}, 0, INSTR({custitem123}, ':')-1)

它们本身可以很好地工作,所以我试图将它们组合到一个公式中,该公式将查找其中任何一个并删除其后的所有字符-除此之外,它还应该查找之前的任何空格连字符或冒号,什么也不要替换。不确定如何实现。

2。删除所有非字母字符和空格(如果有的话)。

例如输入: 1。测试XYZ

其输出应为: 测试XYZ

我尝试通过使用以下公式实现这一目标-

TRIM({class}, '[^A-Za-z ]', '')

此方法的问题是它无法替换Test的第一个字母之前的空格字符。我了解这是因为我告诉它跳过替换空格字符。我不知道如何告诉它仅替换它在第一个字母字符之前找到的空间。

简而言之,如何确定输出为: 测试XYZ

不是

测试XYZ(在“测试”前有一个空格)

2 个答案:

答案 0 :(得分:1)

您可以将regexp_substr用作

regexp_substr({custitem123}, '[^-]+')仅从输入test 123

中提取test 123 - xyz : 123

如果还添加trim,则可以将周围的空格修剪为

例如trim(regexp_substr({custitem123}, '[^-]+'))给出test 123作为修剪后的输出。

答案 1 :(得分:0)

使用 RTRIM 而不是 Trim 来删除像这样的尾随空格:

RTRIM(regexp_substr({custitem123}, '[^-]+'))

test 123 - xyz : 123 解析为 test 123

也感谢您提出这个问题帮助我解决了我自己的类似问题:D