我正在查看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第一次出现之前。