MariaDBでは、JSON_QUOTE()
は、JSONドキュメントに含めることができる有効なJSON文字列リテラルを生成する組み込み関数です。
文字列を二重引用符で囲み、内部引用符やその他の特殊文字をエスケープして、utf8mb4文字列を返します。
構文
構文は次のようになります:
JSON_QUOTE(json_value)
例
実例を示します。
SELECT JSON_QUOTE('Small') AS 'Result';
結果:
+---------+ | Result | +---------+ | "Small" | +---------+
エスケープ文字
文字列を二重引用符で囲むことに加えて、JSON_QUOTE()
また、内部引用符やその他の特殊文字もエスケープします。
例:
SELECT JSON_QUOTE('By "small", she meant "tiny"') AS 'Result';
結果:
+------------------------------------+ | Result | +------------------------------------+ | "By \"small\", she meant \"tiny\"" | +------------------------------------+
この場合、元の文字列には二重引用符が含まれているため、結果の文字列は各二重引用符をバックスラッシュでエスケープします。
二重引用符をエスケープしないと、外側の二重引用符に干渉し、誤って文字列を早期に終了してしまいます。
JSONオブジェクト
JSONオブジェクトの文字列表現を引用する例を次に示します。
SELECT JSON_QUOTE('{ "name": "Brandy"}');
結果:
+-----------------------------------+ | JSON_QUOTE('{ "name": "Brandy"}') | +-----------------------------------+ | "{ \"name\": \"Brandy\"}" | +-----------------------------------+
配列
配列の文字列表現を引用する例を次に示します。
SELECT JSON_QUOTE('[ "Small", "Medium", "Large" ]');
結果:
+----------------------------------------------+ | JSON_QUOTE('[ "Small", "Medium", "Large" ]') | +----------------------------------------------+ | "[ \"Small\", \"Medium\", \"Large\" ]" | +----------------------------------------------+
数字
数値を渡すと、NULL
が返されます :
SELECT JSON_QUOTE(10) AS 'Result';
結果:
+--------+ | Result | +--------+ | NULL | +--------+
番号は文字列として提供する必要があります。その後、引用符で囲まれた文字列として返されます。
例:
SELECT JSON_QUOTE('10') AS 'Result';
結果:
+--------+ | Result | +--------+ | "10" | +--------+
ヌル引数
引数がNULL
の場合 、結果はNULL
です :
SELECT JSON_QUOTE(null);
結果:
+------------------+ | JSON_QUOTE(null) | +------------------+ | NULL | +------------------+
パラメータカウントが正しくありません
JSON_QUOTE()
を呼び出す 引数がないとエラーになります:
SELECT JSON_QUOTE();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_QUOTE'
提供する引数が多すぎる場合も同じです:
SELECT JSON_QUOTE('a', 'b');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_QUOTE'
その他の例
MariaDB JSON_QUOTE()
同じ名前のMySQL関数と同じように機能します。 JSON_QUOTE()
を参照してください –その他の例については、MySQLでJSON値として使用される文字列の文字をエスケープする方法。