我正在寻找类似于 ISNUMERIC()
的函数来自 T-SQL 和 Teradata SQL。如果字符类型字段中包含的数据都是数字,我想要一个简单的方法来返回一个 bool 值(或数字 1/0)。
例如:
我的专栏包含以下记录:'001'
和 'ABC'
我希望查询返回: 1(或真)和 0(或错误) .
有没有类似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 中。
关于teradata - 如何使用 Teradata SQL 检查字段是否包含所有数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134393/