我有一个包含15列(文本)的表 我用char_length计算每列的字符数,并将其存储在视图中。现在我想总结一下这些结果。 在表的某些字段中,当前没有文本,因此这些字段为NULL /空。如果我现在对视图(整数)的结果字段求和,则只计算填充所有15列的行。
SELECT C1+C2+...+C15 FROM view;
我也试过这些方法(不使用视图):
SELECT char_length(C1)+char_length(C2)+...+char_length(C15) FROM T1;
SELECT char_length(C1||C2||...||C15) FROM T1;
如何计算多列(每行)的字符数?即使某些列目前尚未填充。
答案 0 :(得分:4)
concat()
函数会将NULL
值视为空字符串:
select char_length(concat(c1, c2, c3, c4, c5))
from t1;
它还会隐式地将任何非字符值转换为字符串,因此即使其中一列是例如integer
这将有效。