如何检查给定的小数是否有效。我通常做一个像下面这样的case语句来检查列是无效还是NULL,然后将其设置为0,否则按原样执行:
case when decimal_column is NULL or decimal_column NOT BETWEEN -999999999999 AND 999999999999 then 0 else decimal_column end
任何人都可以告诉我上述查询是否正确
由于
答案 0 :(得分:0)
在Teradata 14.10或更高版本中,可以使用TO_NUMBER()
功能。
SELECT TO_NUMBER({decimal column})
FROM {table};
如果转换为数字失败,TO_NUMBER()
将返回NULL。有关更多详细信息,请参阅SQL函数,运算符,表达式和谓词手册。
答案 1 :(得分:0)
您也可以使用trycast
。像......这样的东西:
trycast(trim(col1)) as DECIMAL (XX,Y))
来自TD-Doku: TRYCAST接受一个字符串并尝试将其强制转换为AS关键字后指定的数据类型(类似于CAST)。如果转换失败,则TRYCAST返回NULL而不是失败。