PostgreSQLビット演算子の使い方| =

私はPostgreSQL dbで次の更新クエリを実行したいが、それは動作せず、構文エラーを出す。

次のようにクエリ

update wl_user set role_bitmask= role_bitmask|=1 where email='[email protected]'

問題は | = 演算子であるようですが、PostgreSQLでは| =演算子の使い方を知っていますか?

以下はエラーです。

  [Err] ERROR:演算子が存在しない:整数| =整数
LINE 1:... pdate wl_user set role_bitmask = role_bitmask | = 1ここで...
                                                             ^
ヒント:指定された名前と引数の型に一致する演算子がありません。明示的な型キャストを追加する必要があるかもしれません。
 
0

1 答え

| = の代わりに role_bitmask = role_bitmask | = 1 の代わりに role_bitmask = role_bitmask | 1 | とは何ですか?

明確にするために:PostgreSQLには多くの演算子があり、新しい演算子を定義することができます。しかし、あなたの場合、これは2つの理由で重要ではありません:

  • The manual for UPDATE says about the syntax (abbreviated): UPDATE ... table ... SET column = { expression | DEFAULT }. This means, that the = is mandatory and not any of the normal operators. Therefore there is no |= and no &= .
  • Among all those extensible operators there is no assignment operator. Assignment is handled in a special way for each case. Have a look at this question for some hints.

あなたの質問について: role_bitmask = role_bitmask | = 1 のような表現は、すべての言語で眉を浮かべます:-)

Summary: You have to use the long form ... SET column = colum | bitmask.

2
追加された