我正在使用Apache spark 1.6.2的hive 2.11(hive context)。 我正在观察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'
所以我的问题是: -
我在这里尝试执行以上查询:http://demo.gethue.com/beeswax/#query 但得到了同样的结果。
答案 0 :(得分:3)
正如您在foobar示例中所看到的,第一个字母的索引是1。
如果您有一个非正数m,则您的子字符串从m个位置开始&#39; left&#39; 1.
示例:
select substring('abcdefgh',-1,3)
h
从这个角度来看,你可以看到1左边的0位置仍然是1,因此命令给出的结果相同。