SELECT CASE WHEN THEN ELSE END AS
2016-08-20 17:00
465 查看
方法一: SELECT CASE WHEN SUBSTRING(timerange, LENGTH(timerange)) < "5" THEN CONCAT(SUBSTRING(timerange, 1, LENGTH(timerange) - 1), "0") ELSE CONCAT(SUBSTRING(timerange, 1, LENGTH(timerange) - 1), "5") END AS timerange FROM Employee; 方法二: import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector; public class TimeRangeConverter GenericUDF { @Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { if (arguments.length != 1) { throw new UDFArgumentLengthException("The function time_range_converter(time_rage) requires 1 argument."); } ObjectInspector timeRangeVal = arguments[0]; if (!(timeRangeVal instanceof StringObjectInspector)) { throw new UDFArgumentException("First argument must be of type String (time_range as String)"); } return PrimitiveObjectInspectorFactory.writableStringObjectInspector; } @Override public Object evaluate(DeferredObject[] arguments) throws HiveException { String timeRangeVal = (String) ObjectInspectorUtils.copyToStandardJavaObject(arguments[0].get(), PrimitiveObjectInspectorFactory.javaStringObjectInspector); char[] characters = timeRangeVal.toCharArray(); if (characters[characters.length - 1] > '5') { characters[characters.length - 1] = '5'; } else { characters[characters.length - 1] = '0'; } return String.valueOf(characters); } @Override public String getDisplayString(String[] arguments) { assert (arguments.length == 1); return "time_range_converter(" + arguments[0] + ")"; } } Call the Hive update statement like: CREATE TEMPORARY FUNCTION time_range_converterAS 'TimeRangeConverter'; UPDATE Employee SET timerange = time_range_converter(timerange);
相关文章推荐
- sql 将横的记录显示为竖的记录 max(case when CASE ltrim(ps.SIZE) WHEN '4.5' THEN ps.PairPerCarton END is null then null else ps.PairPerCarton end ) AS [4.5]
- SUM(CASE WHEN RECHARGE_STATUS =1 THEN 1 ELSE 0 END) as 成功数量,
- SUM(CASE WHEN RECHARGE_STATUS =1 THEN 1 ELSE 0 END) as 成功数量,
- SUM(CASE WHEN RECHARGE_STATUS =1 THEN 1 ELSE 0 END) as 成功数量,
- MySQL条件控制(case when...then...else...end) 详细解释
- case+when+then+else+end
- case when then else end
- Case When then else end-----生成统计表
- mysql操作查询结果case when then else end用法举例
- SQL条件控制(case when...then...else...end) 详细解释
- SQL中的case when then else end用法
- SQL之case when then else end用法
- DB2 的 case when then else end 条件分支的处理
- mysql操作查询结果case when then else end用法举例
- case when then else end
- SQL中的case when then else end详细用法
- 条件语句(case...when...then...else...end)
- Mysql-----case when then else end
- oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用