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

标签 teradata

我正在寻找类似于 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)返回 0TO_NUMBER('')返回 NULL .

同样的分隔符,如 -/: , 被 trycast 忽略但不是来自 to_number :TryCast('05-075' AS INT)返回 5075TO_NUMBER返回 NULL
您可以基于此编写 CASE 并将其放入 SQL UDF 中。

关于teradata - 如何使用 Teradata SQL 检查字段是否包含所有数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134393/

相关文章:

hadoop - Sqoop 中的增量加载

python - 使用 Python 中的 teradatasql 模块连接到 Teradata

sql - 没有右表中的多行的左连接

teradata - 使用 VirtualBox 启动 Teradata Express VM

sas teradata 快速加载问题

sql - 需要根据单词列表在 Teradata SQL 中搜索文本字段并返回该单词

mysql - 选择聚合函数和所有其他列

teradata - 如何使用 UTF-8 编码提取 Teradata .TPT 文件

sql - 如何删除 Teradata 表中不在另一个表中的行?

sql - 查找 Teradata SQL 中给定列的哪些行具有不同的值