2016-08-31 4 views
3

Apache spark 1.6.2でハイブ・コンテキスト2.11(ハイブ・コンテキスト)を使用しています。 hive substr関数で予期しない動作が発生しています。サブ(文字列|バイナリA、 int型開始、int型のlen)のストリングまたはスライスを返し|Hive substr関数の開始インデックスの問題

SUBSTR(バイナリA、int型開始、int型のlen文字列) - :

ドキュメントと言います長さがlenの開始位置から始まるAのバイト配列 たとえば、 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. これは既知の問題ですか?

上記のクエリをここで実行しようとしました。http://demo.gethue.com/beeswax/#query でも同じ結果が得られました。あなたが正でない数mを持っている場合は

+0

ゼロは記載されていませんが、リンクするドキュメントでは、部分文字列に負の数を使用して説明しています。 –

答えて

2

あなたがfoobarの例でわかるように、最初の文字のインデックスは1

では、あなたの部分文字列が開始さメートルの位置「左」1.

例の:

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

このような観点から見ると、1の左の0の位置がまだ1であることがわかるため、コマンドでも同じ結果が得られます。

+0

ご清聴ありがとうございます。答えを受け入れる。 – Aiden

+0

優れた説明! –