【问题标题】:How to get a column length defined in the table schema in teradata如何获取在 teradata 的表架构中定义的列长度
【发布时间】:2019-02-27 20:44:55
【问题描述】:

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

例如:我有一个如下表架构。

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 - len(name)) 计算,其中 10 是创建表时定义的列“名称”的最大长度。如何在 Teradata 中实现这一点?

【问题讨论】:

  • 这有什么价值可以证明这种努力是合理的?

标签: teradata teradata-sql-assistant


【解决方案1】:

获取字符串长度的标准 SQL 函数名为Char_Length

10 - Char_Length(name)

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

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

【讨论】:

  • Char_length (v) 给出字符串的实际长度,而不是为该列定义的总长度
  • @Sivachandran:正是您所要求的:剩余空间使用公式 (10 - len(name)) 计算,其中 10 是列的最大长度创建表时定义的“名称”
  • 我需要动态传递值 10 - 这个值应该取自模式。可能是我的通讯被错误地中断了,抱歉。另外,我尝试了 Regexp_substr() - 它显示了一些语法错误。
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 2023-04-06
  • 2023-03-17
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 2017-10-03
相关资源
最近更新 更多