索引函数在SAP Data Services中的作用



我正在查看SAP数据服务(BODS)中的数据流。表(WORKCODE)中的一列"Reg"具有双值(例如8.33E-02)。有人能解释一下下面的表达式以及下面表达式中"index"的函数是什么吗?

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

我刚刚看到你的帖子,因为我正在寻找有关BODS中Index函数的信息。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

风味

刚刚看到这个&如果其他人来了,让我们谈谈整个声明:

substr(WORKCODES.Reg,1,(索引(上(WORKCODES.Reg),'E',1)-1)

让我们从内到外进行处理,并从第二次引用变量WORKCODES.Reg:开始

(索引(上限(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第一次出现之前。

相关内容

  • 没有找到相关文章

最新更新