2017-01-13 12 views
0

Redshiftデータベースに、ビットマスクをintとして格納した列があります。特定のビット(たとえば、32)が設定されているかどうかを調べる方法が必要です。 Redshiftにはbit_andがありますが、これは集計関数に過ぎません。だから、あなたはできませんbit_and(column, 32)BitwiseとAmazon Redshift SQL

私は、バイナリ表現であってsubstringを使用しているcharにint型をキャストすることでこれをハックするのも楽しいでしょう。しかし、それはどちらかのキャストを行う方法があるように見えません。

value & 32は、value + 32と同じくらい簡単ですが、明らかにRedshiftではありません。何か案は?

入力:

le_column 
35 
2 

所望の出力:

column_has_32_set 
1 
0 

答えて

1

そして...どうやら、赤方偏移は、標準&をサポートし、彼らは文書シフトが残さんが、彼らは(それを文書化していないと右にシフト?)。

select 
    le_column & 32 
from 
    le_table 

ドキュメント:http://docs.aws.amazon.com/redshift/latest/dg/r_OPERATOR_SYMBOLS.html

+0

ありがとう! AWSドキュメントは、 '&'演算子で更新されました。 –

+0

素晴らしい! '|'(ビット単位または)演算子を追加できますか? –

関連する問題