我需要找到创建表时定义的列长度与列值的长度之间的差异。
例如:我有一个如下的表模式。
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中实现这一目标?
答案 0 :(得分:3)
获取字符串长度的标准SQL函数名为Char_Length
:
10 - Char_Length(name)
如果您不想对定义的VarChar长度进行硬编码:
RegExp_Substr(TYPE(name), '[0-9]+') - Char_Length(name)