我有一个字符串字段,主要包含数字小数值,但有时包含“< 0.10”或“HEMOLYSIS”等值。
我想使用公式将这些数值字符串转换为值,将非值留空(null)。
if isNumeric({a_omgang.omg_resultat}) then
toNumber({a_omgang.omg_resultat})
对于所有非数字值,返回0,这使得很难计算,例如平均值或平均值,或计算值的数量。 (后者当然可以通过使用具有isNumeric
评估公式的运行总计数来实现。)
如何建议我如何按照自己的意愿使用公式?
编辑:我希望该值为空(null),而不仅仅是非数字的可见性。
答案 0 :(得分:4)
过去,我创建了一个返回NULL的SQL表达式:
-- {@DB_NULL}
-- Oracle syntax
(
SELECT NULL FROM DUAL
)
-- {@DB_NULL}
-- MS SQL syntax
(
SELECT NULL
)
然后我在公式中引用这个字段:
// {@FormulaField}
If IsNumberic({table.field} Then
ToNumber({table.field})
Else
ToNumber({@DB_NULL})
答案 1 :(得分:2)
您可以通过执行以下操作来实现此目的:
if isNumeric({a_omgang.omg_resultat})
then toNumber({a_omgang.omg_resultat})
else {@NullNumeric}
请注意,您也可以将此用于任何其他数据类型(包括字符串,因为空字符串不等于空字符串),并且它对于使用汇总函数非常有用,您只需要直接忽略某些行。
答案 2 :(得分:0)
不确定这是否是最佳解决方案,但它是 解决方案。
为字段的最大值创建一个运行总公式。按公式评估
NumericText(Replace({a_omgang.omg_resultat}, ".", ","))
并按公式重置
true
这将为您提供每个条目的最大结果。 (即该条目。)仅评估可转换为值的条目,因此所有其他条目将为null。将true
作为重置公式可确保始终获得正在评估的条目的值。
然后可以使用问题中的公式将此运行总计的结果转换为值。
Replace()
归因于区域设置,可能不需要,具体取决于您的系统设置。如果需要,还必须在价值转换公式中使用它。
答案 3 :(得分:0)
据我所知,你不能直接这样做。如果数字公式字段返回null,则将其转换为0.
你说你无法抑制。你能转换成数字然后回到字符串吗?