MySQL の BOOL 変数を JSON の BOOL 値に設定できませんか?
P粉707235568
P粉707235568 2023-09-03 10:57:44
0
1
488
<p>MySQL バージョン: 8.0.27</p> <p>これは私にとって意味がありません。次の定義があります: </p> <pre class="brush:php;toolbar:false;">DECLARE p_array_only bool DEFAULT IFNULL(JSON_EXTRACT(in_parameters, '$.array_only'),FALSE);</pre> <p>正しい JSON 構造を渡した場合: </p> <pre class="brush:php;toolbar:false;">{"array_only":true}</pre> <p>エラーが発生します:</p> <pre class="brush:php;toolbar:false;">行 1 の列 'p_array_only' の値 'true' が正しくありません</pre> <p>キーを完全に省略しても機能することに注意してください (IFNULL は Null を返し、FALSE に設定されるため)。 </p> <p>何が起こったのですか? JSON からの他のすべてのコード割り当て (INT、Text、SMALLINT など) は正常に機能します。形式はまったく同じです。そして、このコードは数か月前 (8.0.24 を使用) には機能していたと確信しています。 </p> <p>私も試してみました: </p> <pre class="brush:php;toolbar:false;">IFNULL(IF(JSON_EXTRACT(@test1, '$.array_only') IS TRUE,TRUE,FALSE),FALSE)</pre> <p>同じエラーです。 </p> <p>それでは、8.0.27 で true/false BOOL JSON 値を BOOL MySQL 値に簡単に変換するにはどうすればよいでしょうか? </p>
P粉707235568
P粉707235568

全員に返信(1)
P粉541796322

BOOLEAN は MySQL の組み込みデータ型ではありません。これはエイリアスであり、TINYINT(1) として実装されます。

参照https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html


暗黙的なデータ型変換を使用します:

リーリー

対応する値の型が文字列または null の場合は失敗します。

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9c5fac2c7533d9e365a449ce00c06f1b

PS. 短い形式の DEFAULT IFNULL(0 in_parameter->'$.array_only', FALSE); も便利です。

PPS. もちろん、明示的な CAST() も使用できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート