我正在寻找类似于ISNUMERIC()T-SQL和Teradata SQL的功能.如果字符类型字段中包含的数据都是数字,我想要一个返回布尔值(或数字1/0)的简单方法.
例如:
我的专栏包含以下记录:'001'和'ABC'
我希望查询返回:1(或True)和0(或False).
是否存在类似于ISNUMERIC()TD原生支持的方法?我找到了一些我可以使用的正则表达式的选项,但是想在查看这条路径之前是否有更简单的方法.如果不存在这样的方法,我愿意接受有关完成此方法的建议.
TD15.10支持TRYCAST('ABC' AS INT)在转换失败时返回NULL.
TO_NUMBER('ABC') 也为坏数据返回NULL.
对于像''或''这样的字符串有一些区别:TRYCAST('' AS INT)返回0和TO_NUMBER('')返回NULL.
对于像这样的分隔符也是如此-/:,它们被忽略trycast而不是to_number:TryCast('05-075' AS INT)返回5075和TO_NUMBER返回NULL
您可以基于此编写CASE并将其放入SQL UDF中.