如何检查decimal在Teradata中是否为有效值

如何检查decimal在Teradata中是否为有效值,teradata,Teradata,如何检查给定的小数是否有效。我通常使用下面的case语句检查列是否无效或为NULL,然后将其设置为0,否则按原样处理: case when decimal_column is NULL or decimal_column NOT BETWEEN -999999999999 AND 999999999999 then 0 else decimal_column end 有人能告诉我上面的查询是否正确吗 感谢Teradata 14.10或更高版本中的,可以使用TO_NUMBER()函数 SELEC

如何检查给定的小数是否有效。我通常使用下面的case语句检查列是否无效或为NULL,然后将其设置为0,否则按原样处理:

case when decimal_column is NULL or decimal_column NOT BETWEEN -999999999999 AND 999999999999 then 0 else decimal_column end
有人能告诉我上面的查询是否正确吗


感谢Teradata 14.10或更高版本中的,可以使用
TO_NUMBER()
函数

SELECT TO_NUMBER({decimal column})
  FROM {table};

如果转换为数字失败,
到_number()
返回NULL。有关更多详细信息,请参阅SQL函数、运算符、表达式和谓词手册。

您也可以使用
trycast
。类似于

trycast(trim(col1)) as DECIMAL (XX,Y)) 

来自TD-Doku:TRYCAST获取一个字符串,并尝试将其强制转换为AS关键字后指定的数据类型(类似于强制转换)。如果转换失败,TRYCAST将返回NULL而不是失败。

什么定义“有效”?您的列是如何定义的?你不是在铸造它,那么它已经被定义为十进制了吗?如果您的列未定义为十进制,Rob的回答应该很好。@Andrew:我的列已经是十进制的,我需要检查我的十进制列是否包含任何非数字数据。如果列定义为十进制,则任何无效数据在加载时都将返回转换错误。