如何获取在Teradata的表模式中定义的列长度

时间:2018-09-24 10:45:56

标签: teradata teradata-sql-assistant

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

例如:我有一个如下的表模式。

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是创建表时定义的列“ name”的最大长度。如何在Teradata中实现这一目标?

1 个答案:

答案 0 :(得分:3)

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

10 - Char_Length(name)

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

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