将 char 转换为 int TeraData Sql

Convert char to int TeraData Sql

我正在尝试将列从 char (8) 转换为整数,以便使用整数实现参照完整性。 IT 不起作用,我测试了 select 以检查演员阵容。 Utente_cd 是一个 char (8) 列

SEL 
CAST(UTENTE_CD AS INTEGER) 
FROM TABLEA

Teradata 产生此错误:

SELECT Failed. 2621: Bad character in format or data of TABLEA.

有时 char 列还包含我应该丢弃的字母数字代码。

在 TD15.10 中你可以做 TRYCAST(UTENTE_CD AS INTEGER) 这将 return 一个 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