Hive substr函数启动索引问题

时间:2016-08-31 14:11:09

标签: apache-spark hiveql

我正在使用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'

所以我的问题是: -

  1. 我的起始索引是0还是1?
  2. 这是一个已知问题吗?
  3. 我在这里尝试执行以上查询:http://demo.gethue.com/beeswax/#query 但得到了同样的结果。

1 个答案:

答案 0 :(得分:3)

正如您在foobar示例中所看到的,第一个字母的索引是1。

如果您有一个非正数m,则您的子字符串从m个位置开始&#39; left&#39; 1.

示例:

select substring('abcdefgh',-1,3)
h

从这个角度来看,你可以看到1左边的0位置仍然是1,因此命令给出的结果相同。