将字符转换为int-TeraData-Sql

将字符转换为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(8)转换为integer,以便使用整数实现引用完整性。它不起作用,我测试了一个select来检查演员阵容。Utente_cd是一个字符(8)列

Teradata产生以下错误:

选择失败。2621:表格A的格式或数据中的错误字符


有时,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