Aid*_*den 5 hiveql apache-spark
我在 Apache spark 1.6.2 中使用 hive 2.11(hive 上下文)。我正在观察 hive substr 函数的意外行为。
文档说:-
substr(string|binary A, int start, int len) substring(string|binary A, int start, int len) 返回 A 的字节数组的子字符串或切片,从起始位置开始,长度为 len。例如, substr('foobar', 4, 1) 结果为 'b'(参见 [ http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr])。
我的观察:-
1. select substr('Sakila' ,0,3) from <table>; => returns 'Sak'
2. select substr('Sakila' ,1,3) from <table>; => returns 'Sak'
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:-
我尝试在此处执行上述查询:http : //demo.gethue.com/beeswax/#query 但得到了相同的结果。
正如您在 foobar 示例中看到的,第一个字母的索引是 1。
如果您有一个非正数 m,则您的子字符串将从 1 的“左侧”m 个位置开始。
例子:
select substring('abcdefgh',-1,3)
h
Run Code Online (Sandbox Code Playgroud)
从这个角度来看,您可以看到 1 左边的 0 个位置仍然是 1,因此命令给出相同的结果。