将字符转换为int-TeraData-Sql
我正在尝试将一列从char(8)转换为integer,以便使用整数实现引用完整性。它不起作用,我测试了一个select来检查演员阵容。Utente_cd是一个字符(8)列 Teradata产生以下错误: 选择失败。2621:表格A的格式或数据中的错误字符将字符转换为int-TeraData-Sql,sql,casting,char,int,teradata,Sql,Casting,Char,Int,Teradata,我正在尝试将一列从char(8)转换为integer,以便使用整数实现引用完整性。它不起作用,我测试了一个select来检查演员阵容。Utente_cd是一个字符(8)列 Teradata产生以下错误: 选择失败。2621:表格A的格式或数据中的错误字符 有时,char列还包含一个我应该丢弃的字母数字代码。在TD15.10中,您可以执行TRYCAST(uninte\u CD AS INTEGER),它将返回NULL而不是失败 在有多种方法之前: -- TO_NUMBER returns NULL
有时,char列还包含一个我应该丢弃的字母数字代码。在TD15.10中,您可以执行
TRYCAST(uninte\u 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
糟糕的桌子设计。为什么有混合数据类型?
-- 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