JSON_UNQUOTE
説明
この関数はJSON値からクオートを削除し、結果を文字列として返します。パラメータがNULLの場合、NULLを返します。
特殊文字には以下が含まれます:
- クオート(
") - バックスラッシュ(
\) - バックスペース(
\b) - 改行(
\n) - キャリッジリターン(
\r) - 水平タブ(
\t)
制御文字には以下が含まれます:
CHAR(0)は\u0000としてエスケープされます
構文
JSON_UNQUOTE (<str>)
パラメータ
<str>クォートを削除する対象の文字列。
戻り値
文字列を返します。特殊なケースは以下の通りです:
- 入力パラメータがNULLの場合、NULLを返します。
- 入力パラメータがダブルクォートで囲まれた値でない場合、値自体を返します。
- 入力パラメータが文字列でない場合、自動的に文字列に変換されてから値自体を返します。
例
-
文字列内のエスケープ文字が削除されます
select json_unquote('"I am a \\"string\\" that contains double quotes."');+--------------------------------------------------------------------+
| json_unquote('"I am a \\"string\\" that contains double quotes."') |
+--------------------------------------------------------------------+
| I am a "string" that contains double quotes. |
+--------------------------------------------------------------------+ -
特殊文字のエスケープ
select json_unquote('"\\\\ \\b \\n \\r \\t"');+----------------------------------------+
| json_unquote('"\\\\ \\b \\n \\r \\t"') |
+----------------------------------------+
| \
|
+----------------------------------------+
エスケープ文字が削除されるため、一部の空白文字(改行、バックスペース、タブなど)が出力されます
-
制御文字のエスケープ
select json_unquote('"\\u0000"');+---------------------------+
| json_unquote('"\\u0000"') |
+---------------------------+
| |
+---------------------------+ -
無効なJSON文字列
select json_unquote('"I am a "string" that contains double quotes."');ERROR 1105 (HY000): errCode = 2, detailMessage = [RUNTIME_ERROR]Invalid JSON text in argument 1 to function json_unquote: "I am a "string" that contains double quotes." -
引用符で始まるが引用符で終わらないケース
select json_unquote('"I am a "string" that contains double quotes.');+---------------------------------------------------------------+
| json_unquote('"I am a "string" that contains double quotes.') |
+---------------------------------------------------------------+
| "I am a "string" that contains double quotes. |
+---------------------------------------------------------------+ -
クォートで終わる場合
select json_unquote('I am a "string" that contains double quotes."');+---------------------------------------------------------------+
| json_unquote('I am a "string" that contains double quotes."') |
+---------------------------------------------------------------+
| I am a "string" that contains double quotes." |
+---------------------------------------------------------------+