如何使用Teradata SQL检查字段是否包含所有数值?

Sev*_*yns 3 teradata

我正在寻找类似于ISNUMERIC()T-SQL和Teradata SQL的功能.如果字符类型字段中包含的数据都是数字,我想要一个返回布尔值(或数字1/0)的简单方法.

例如:

我的专栏包含以下记录:'001''ABC'

我希望查询返回:1(或True)0(或False).

是否存在类似于ISNUMERIC()TD原生支持的方法?我找到了一些我可以使用的正则表达式的选项,但是想在查看这条路径之前是否有更简单的方法.如果不存在这样的方法,我愿意接受有关完成此方法的建议.

dno*_*eth 7

TD15.10支持TRYCAST('ABC' AS INT)在转换失败时返回NULL.

TO_NUMBER('ABC') 也为坏数据返回NULL.

对于像''或''这样的字符串有一些区别:TRYCAST('' AS INT)返回0TO_NUMBER('')返回NULL.

对于像这样的分隔符也是如此-/:,它们被忽略trycast而不是to_number:TryCast('05-075' AS INT)返回5075TO_NUMBER返回NULL

您可以基于此编写CASE并将其放入SQL UDF中.