0

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

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

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 中实现这一目标?

4

1 回答 1

3

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

10 - Char_Length(name)

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

RegExp_Substr(TYPE(name), '[0-9]+') - Char_Length(name)
于 2018-09-24T11:57:27.080 回答