【问题标题】:Convert char to int TeraData Sql将 char 转换为 int TeraData Sql
【发布时间】:2023-03-17 08:45:02
【问题描述】:
我正在尝试将列从 char (8) 转换为整数,以便使用整数实现引用完整性。它没有工作,我测试了一个选择以检查演员表。 Utente_cd 是一个 char (8) 列
SEL
CAST(UTENTE_CD AS INTEGER)
FROM TABLEA
Teradata 产生此错误:
选择失败。 2621:TABLEA 格式或数据中的错误字符。
有时 char 列还包含一个我应该丢弃的字母数字代码。
【问题讨论】:
标签:
sql
casting
char
int
teradata
【解决方案1】:
在 TD15.10 中,您可以执行 TRYCAST(UTENTE_CD AS INTEGER),这将返回 NULL 而不是失败。
之前有多种方式:
-- TO_NUMBER returns NULL when failing
CAST(TO_NUMBER(UTENTE_CD) AS INTEGER)
-- check if there are only digits
CASE WHEN UTENTE_CD = '' -- all spaces
THEN NULL
WHEN LTRIM(UTENTE_CD, '0123456789') = '' -- only digits
THEN CAST(UTENTE_CD AS INTEGER)
ELSE NULL
END