MariaDBでは、JSON_UNQUOTE()
JSON値から引用符を削除する組み込み関数です。つまり、JSON値を「引用解除」します。
構文
構文は次のようになります:
JSON_UNQUOTE(val)
例
実例を示します。
SELECT JSON_UNQUOTE('"Eggs"');
結果:
+------------------------+ | JSON_UNQUOTE('"Eggs"') | +------------------------+ | Eggs | +------------------------+
エスケープ文字
値に円記号が含まれている場合(\
)、通常は無視されます。ただし、バックスラッシュを含む特定のシーケンスには特別な意味があり、JSON_UNQUOTE()
の結果に影響を与える可能性があります。 。
これは、SQLモードがNO_BACKSLASH_ESCAPES
に設定されているかどうかによって異なります。 。 SQLモードがNO_BACKSLASH_ESCAPES
に設定されている場合 、これにより、文字列内でバックスラッシュ文字をエスケープ文字として使用できなくなり、通常の文字と同等になります。
それ以外の場合は、次のシーケンスが当てはまります。
エスケープシーケンス | キャラクター |
---|---|
\" | 二重引用符(" ) |
\b | バックスラッシュ |
\f | フォームフィード |
\n | 改行(改行) |
\r | キャリッジリターン |
\t | タブ |
\\ | バックスラッシュ(\ ) |
\uXXXX | UTF-Unicode値の場合は8バイトXXXX |
例:
SELECT JSON_UNQUOTE('Feeling\tGood');
結果:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling Good | +-------------------------------+
ここでは、\t
を使用しました 文字列内にタブ文字を追加するシーケンス。
SQLモードをNO_BACKSLASH_ESCAPES
に設定した場合 、シーケンスには特別な意味はなく、リテラルシーケンスは解釈なしで出力に含まれます:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT JSON_UNQUOTE('Feeling\tGood');
結果:
+-------------------------------+ | JSON_UNQUOTE('Feeling\tGood') | +-------------------------------+ | Feeling\tGood | +-------------------------------+
ヌル引数
引数がNULL
の場合 、結果はNULL
です :
SELECT JSON_UNQUOTE(null);
結果:
+--------------------+ | JSON_UNQUOTE(null) | +--------------------+ | NULL | +--------------------+
パラメータカウントが正しくありません
JSON_UNQUOTE()
を呼び出す 引数がないとエラーになります:
SELECT JSON_UNQUOTE();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'
提供する引数が多すぎる場合も同じです:
SELECT JSON_UNQUOTE('a', 'b');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'