代码之家  ›  专栏  ›  技术社区  ›  Darknight

如何在teradata中获得表模式中定义的列长度

  •  0
  • Darknight  · 技术社区  · 6 年前

    我需要找出列值的长度和创建表时定义的列长度之间的差异。

    CREATE TABLE `employee` (
      `id` int(10) NOT NULL,
      `name` varchar(10) DEFAULT NULL,
      `subject` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) 
    

    有价值观

    id  name    subject 
    1   Alex    maths   
    2   Bob     maths   
    3   Clark   science 
    4   Dave    maths   
    

    现在我需要输出

    id  name    subject len(name) remain_space 
    1   Alex    maths    4           6
    2   Bob     maths    3           7
    3   Clark   science  5           5
    4   Dave    maths    4           6
    

    这里的剩余空间是用公式计算出来的 ,其中10是创建表时定义的列“name”的最大长度。如何在Teradata中实现这一点?

    1 回复  |  直到 6 年前
        1
  •  3
  •   dnoeth    6 年前

    Char_Length

    10 - Char_Length(name)
    

    如果不想硬编码定义的VarChar长度:

    RegExp_Substr(TYPE(name), '[0-9]+') - Char_Length(name)