【发布时间】:2014-10-21 09:43:05
【问题描述】:
我需要根据字符串的长度来处理它。我已经尝试了以下方法,但遇到了异常。
需求是这样的。
我在列号中有一个字符串为 123456,结果应该是 12-34-56。如果是 1234,那么 12-34-00。如果只有 2 位数字,则为 12-00-00。
IF(LENGTH(numbers) = 2,concat(numbers,'-00-00') OR LENGTH(numbers) = 4,concat(SUBSTR(numbers,1,2),'-',SUBSTR(numbers,3,2),'-00') OR LENGTH(numbers) = 6,concat(SUBSTR(numbers,1,2),'-',SUBSTR(numbers,3,2),SUBSTR(msg.numbers,5,2))) as finalnumbers
例外是:
FAILED: ClassCastException org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector
有什么帮助吗?
【问题讨论】:
-
您可以使用 rpad 函数将零填充到长度 6。这样可以避免使用条件逻辑。