web-dev-qa-db-ja.com

MariaDBがJSONを比較する

MariaDBの2つのJSONフィールドを比較するにはどうすればよいですか?

MariaDB 10.2および10.3-失敗

_SELECT CAST('{"q":2}' AS JSON);
_

戻り値:SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON)' at line 1

MySQL 5.7.19-正常に動作します

_SELECT CAST('{"num": 1.1, "date": "2015-11-01"}' AS JSON) = CAST('{"date": "2015-11-01", "num": 1.1}' AS JSON);
_

戻り値:_1_

ソース: http://rpbouman.blogspot.com/2015/11/mysql-few-observations-on-json-type.html

その他の同様の質問

私は this を見つけましたが、私のJSONはより複雑です。

2
hrvoj3e

10.3.7以降、mariadbサーバーにネイティブのJSONタイプはありません。 MySQLとの互換性の理由から、JSONはLONG​​BLOBのエイリアスにすぎません: https://mariadb.com/kb/en/library/json-data-type/

JSONで動作する関数のライブラリがあります https://mariadb.com/kb/en/library/json-functions/ (それを選択して変換します);実際にはネイティブ型はないため、これらの関数のすべての入力と出力は、実際には文字列型です。ストアドプロシージャを使用して再帰的なjsonパーサーを技術的に実装することはできますが、それを読んで、クライアントライブラリまたは他のクライアントユーティリティと比較することをお勧めします(たとえば、 https://stackoverflow.com/questions/25851183/how-to-compare-two-json-objects-with-the-same-elements-in-a-different-order-equa =)。

MariaDBはMySQLのドロップイン置換であるとの主張にもかかわらず、MariaDBは100%互換性のあるフォークではなくなったため、一方のソフトウェアで利用できる機能はもう一方では利用できなくなり、その逆も同様です。

1
jynus