我有一个字符串字段,其中大部分是数值,如13.4
,但也有一些是13.4%
。我正在尝试使用以下表达式来删除%
符号,并只保留数值以将字段转换为整数。
以下是到目前为止我在Cognos8ReportStudio的表达式定义中得到的内容:
IF(POSITION('%' IN [FIELD1]) = NULL) THEN
/*** this captures rows with valid data **/
([FIELD1])
ELSE
/** trying to remove the % sign from rows with data like this 13.4% **/
(SUBSTRING([FIELD1]), 1, POSITION('%' IN [FIELD1])))
非常感谢任何提示/帮助。
一个简单的方法是使用trim()函数。以下操作将删除任何尾随的%字符:
TRIM(尾随"%",[FIELD1])
您使用的方法是可行的。但是,您使用的语法与我熟悉的ReportStudio版本不兼容。下面你会发现一个更新的表达式,它适用于我。
IF ( POSITION( '%'; [FIELD1]) = 0) THEN
( [FIELD1] )
ELSE
( SUBSTRING( [FIELD1]; 1; POSITION( '%'; [FIELD1]) - 1 ) )
由于Cognos中字符串中的字符位置是基于1的,因此从POSITION()
返回的位置减去1
非常重要。否则,您只会在百分号后截断字符。
另一个注意事项:您在这里所做的是数据清理。通常更有利的做法是将这些杂务向下推到数据检索链的较低级别,例如数据仓库或至少框架管理器模型,以便在报告级别可以直接将此字段用作数字字段。