【问题标题】:What index function does in SAP Data Services?SAP Data Services 中的索引功能是什么?
【发布时间】:2015-12-08 05:09:01
【问题描述】:

我正在查看 SAP 数据服务 (BODS) 中的数据流。表 (WORKCODE) 中的“Reg”列之一具有双值(例如 8.33E-02)。谁能解释一下下面的表达式以及下面表达式中'index'的功能是什么:

substr(WORKCODES.Reg, 1, (index (upper ( WORKCODES.Reg ),'E',1 )-1 ) )

【问题讨论】:

    标签: sap sap-data-services


    【解决方案1】:

    我刚刚看到您的帖子,因为我正在寻找有关 BODS 中索引功能的信息。 index 函数返回字符串值中字符的位置。等效的 sql 函数是 INSTR。

    在您的示例中(例如 8.33E-02):

    SUBSTR( '8.33E-02', 1, INDEX ( '8.33E-02', 'E', 1)-1 ) 
    

    ==> INDEX ( '8.33E-02', 'E', 1) 将返回从位置 1 开始的字母“E”的位置。它应该是 5。

    然后你使用SUBSTR 函数来提取你号码的第一部分:

    SUBSTR( String Value, Start Pos, End Pos )
    SUBSTR( '8.33E-02',       1,           INDEX ( '8.33E-02', 'E', 1)-1 )
    SUBSTR( '8.33E-02',       1,           5-1 )
    

    你将'E'的位置减去1以保留第一部分!

    回答永远都不晚! =)

    SQL 等效项:

    SELECT SUBSTR( '8.33E-02', 1, INSTR ( '8.33E-02', 'E')-1 ) 
         , INSTR ( '8.33E-02', 'E')
    FROM DUAL
    

    味道

    【讨论】:

      【解决方案2】:

      刚刚看到这个并想如果其他人来这里让我们谈谈整个声明:

      substr(WORKCODES.Reg, 1, (index (upper (WORKCODES.Reg),'E',1)-1))

      让我们由内而外地处理它,并从对变量 WORKCODES.Reg 的第二个引用开始:

      (index (upper (WORKCODES.Reg),'E',1)-1)

      upper 是一个使变量全部大写的函数。这样做是因为它引用了字母“E”。小写“e”将被转换为“E”。

      接下来是索引函数。 index 函数将返回逗号后第一次出现的字符串的位置编号,在本例中为字母“E”。它将从位置 1 开始计数,这就是最后一个逗号后的 1 的用途。 所以让我们说这个词是“树”。此部分会将单词大写为“TREE”,然后从第一个位置开始计数到字母“E”的第一次出现,即 3。现在 -1 将返回该数字为 2。

      所以我们将语句的那部分更改为 2:

      substr(WORKCODES.Reg, 1, 2)

      现在它正在寻找变量 WORKCODES.Reg 的子字符串,从位置 1(这就是数字 1 的含义)开始,持续 2 个字符。

      所以对于单词树,答案是 tr

      出于某种原因,写这篇文章的人想要字母 e 第一次出现之前的所有字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-27
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 2012-02-28
        相关资源
        最近更新 更多