【问题标题】:NetSuite Saved Search: REGEXP_SUBSTR Pattern troublesNetSuite 保存的搜索:REGEXP_SUBSTR 模式问题
【发布时间】:2022-07-01 03:16:39
【问题描述】:

我正在尝试分解如下所示的字符串:

|5~13~3.750~159.75~66.563~P20~~~~Bundle A~~|

这是第二个例子供参考:

|106~10~0~120~1060.000~~~~~~~|

这里是第三个静态尺寸项目的例子:

|3~~~~~~~~~~~5:12|

示例 4:

|3~23~5~281~70.250~upper r~~~~~~|
|8~22~6~270~180.000~center~~~~~~|
|16~22~1~265~353.333~center~~~~~~|

有时同一字符串中有多行。

我对为 regexp_substr 设置模式不是很熟悉,希望能得到一些帮助!

字符串总是有'|'在开头和结尾处和 11 '~' 用于分隔我希望获得的数字/文本值。还有一些数字字符有小数,而另一些则没有。如果它有助于将值分开,如下所示:

|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|

如您所见,如果没有指定某些内容,它会显示为空白,但可能会将它们包含在另一个字符串中,所有值都很少有数据。

对于这种特定情况,我相信 regexp_substr 将是我的最佳选择,但如果有人有其他建议,我很乐意试一试!

这是我目前能想到的公式(文本)

REGEXP_SUBSTR({custbody_msm_cut_list},'[[:alnum:]. ]+|$',1,1)

这使我可以提取字符串中的所有匹配项,但如果排除某些字段,则难以显示正确的数据。

【问题讨论】:

    标签: mysql sql netsuite suitescript saved-searches


    【解决方案1】:
    TRIM(REGEXP_SUBSTR({custbody_msm_cut_list}, '^\|(([^~]*)~){1}',1,1,'i',2))
    

    从字符串的开头,匹配管道字符|,然后匹配除波浪号~ 之外的任何内容,然后匹配波浪号。重复N次{1}。返回这些重复中的最后一个。

    大括号{1}中的整数可以控制处理多少个波浪号

    EG:

    TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~ Unit inches~ Total feet~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){1}',1,1,'i',2))
    

    返回“数量”

    TRIM(REGEXP_SUBSTR('|Quantity~ Feet~ Inch~~~ Piece mark~ Punch Pattern~ Notch~ Punch~ Bundling~ Radius~ Pitch|', '^\|(([^~]*)~){7}',1,1,'i',2))
    

    返回“打孔模式”

    最终值Pitch 是一个稍微特殊的情况,因为它后面没有波浪号:

    TRIM(REGEXP_SUBSTR('|~~~~~~~~~~ Radius~ Pitch|', '^\|(([^~]*)~){11}([^\|]*)',1,1,'i',3))
    

    改编自 https://stackoverflow.com/a/70264782/7885772

    【讨论】:

    • 这正是我想要的!非常感谢您的详细解答!
    【解决方案2】:

    我试图在搜索条件上使用公式数字来仅获取以数字开头的客户。 有什么猜测吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多