【问题标题】: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

【讨论】:

    猜你喜欢
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2015-11-23
    • 2015-12-18
    • 2017-04-25
    • 2015-01-29
    相关资源
    最近更新 更多