Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_QUOTE() – Как да избягвате символи в низове, използвани като JSON стойности в MySQL

Когато работите с JSON и MySQL, понякога може да се наложи да избягвате низове, така че техните кавички да не пречат на интерпретацията на JSON документа. В такива случаи можете да използвате JSON_QUOTE() функция за избягване на потенциално проблемни низове.

JSON_QUOTE() се използва за създаване на валиден JSON низов литерал, който може да бъде включен в JSON документ. Например, може да искате елемент в масив да има текст null като низов литерал, вместо да има действителна нулева стойност. Тази функция може да се използва, за да се гарантира, че текстът е добавен като низов литерал, а не като нулева стойност.

За да го използвате, просто извикайте функцията, докато предавате низа.

Синтаксис

Синтаксисът е така:

JSON_QUOTE(низ)

Където string е низът, който трябва да се екранира.

Пример 1 – Основна употреба

Ето пример за демонстрация.

Първо, нека да разгледаме какво се случва, когато използваме JSON_ARRAY() функция за създаване на масив.

ИЗБЕРЕТЕ JSON_ARRAY("Горещо", "Топло", "Студено") КАТО 'Резултат';

Резултат:

+------------------------+| Резултат |+------------------------+| ["Горещо", "Топло", "Студено"] |+-------------------------+

Резултатът е масив, който съдържа 3 елемента. Знаем, че това е масив, защото започва с отваряща квадратна скоба ([ ) и завършва със затваряща квадратна скоба (] ). Знаем също, че всеки елемент е низ, защото е заобиколен от двойни кавички. Всеки елемент се разделя със запетая.

Сега нека видим какво се случва, когато използваме JSON_QUOTE() вместо това.

SELECT JSON_QUOTE('"Горещо", "Топло", "Студено"') КАТО 'Резултат';

Резултат:

+-------------------------------+| Резултат |+-------------------------------+| "\"Горещо\", \"Топло\", \"Студено\"" |+---------------------------- --+

Не получаваме масив. Получаваме низ. Знаем, че това е низ, защото започва и завършва с двойни кавички. Всички двойни кавички в низа се екранират със знака обратно наклонена черта (\ ).

Ако тези знаци не са екранирани, първият двоен кавичък (след Hot ) неволно ще прекрати низа. Следователно няма да можем да включим останалата част от низа. Като избягваме определени знаци, ние казваме на MySQL да не тълкува тези знаци както обикновено.

Пример 2 – Числа

Същата концепция важи и за числата, с изключение на това, че числата не са затворени в двойни кавички.

Така че можем да създадем масив, който съдържа 3 елемента, всички от които са числа.

ИЗБЕРЕТЕ JSON_ARRAY(1, 2, 3) КАТО 'Резултат';

Резултат:

+-----------+| Резултат |+-----------+| [1, 2, 3] |+----------+

И ето какво се случва, ако преминем към JSON_QUOTE() функция.

ИЗБЕРЕТЕ JSON_QUOTE('[1, 2, 3]') КАТО 'Резултат';

Резултат:

+------------+| Резултат |+------------+| "[1, 2, 3]" |+------------+

Така получаваме същия резултат, с изключение на това, че целият масив е затворен в двойни кавички. Това го прави низ вместо масив.

Пример 3 – Добавяне към масиви/обекти

Можем да вземем този низов литерал и да го добавим като елемент в масив.

SELECT JSON_ARRAY(JSON_QUOTE('[1, 2, 3]'), 8, 9) КАТО 'Резултат';

Резултат:

+------------------------+| Резултат |+------------------------+| ["\"[1, 2, 3]\"", 8, 9] |+-------------------------+

В този случай низовият литерал е първият елемент с 8 и 9 което е съответно вторият и третият елемент.

Можем също да използваме този низов литерал в обект.

SELECT JSON_OBJECT('Key', JSON_QUOTE('[1, 2, 3]')) КАТО 'Резултат';

Резултат:

+-------------------------+| Резултат |+-------------------------+| {"Ключ":"\"[1, 2, 3]\""} |+--------------------------+ 

Пример 4 – Извличане на стойности

Така че, ако трябва да извлечем стойности от нашия JSON документ, той ще бъде интерпретиран като низов литерал вместо масив.

Първо, ето какво се случва, ако зададем масив с трите числа като отделни елементи, след което извлечем първия елемент от масива.

SET @data1 =JSON_ARRAY(1, 2, 3);ИЗБЕРЕТЕ @data1 КАТО '@data1', JSON_EXTRACT(@data1, '$[0]');

Резултат:

+-----------+------------------------------+| @data1 | JSON_EXTRACT(@data1, '$[0]') |+----------+------------------------ ------+| [1, 2, 3] | 1 |+----------+------------------------------+

Така че този масив се състои от три елемента – всеки елемент е отделен елемент в масива.

Сега, ето какво се случва, ако използваме JSON_QUOTE() за да се преобразуват и трите числа и техните квадратни скоби в низов литерал, добавете това към масива, след което извлечете първия елемент от масива.

SET @data2 =JSON_ARRAY(JSON_QUOTE('[1, 2, 3]'));ИЗБЕРЕТЕ @data2 КАТО '@data2', JSON_EXTRACT(@data2, '$[0]');

Резултат:

+------------------+----------------------------------- ----+| @data2 | JSON_EXTRACT(@data2, '$[0]') |+-------------------+---------------- --------------+| ["\"[1, 2, 3]\""] | "\"[1, 2, 3]\"" |+------------------+--------------- ---------------+

Така че в този случай масивът се състои само от един елемент – целия литерал на низа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Включване на заглавки при използване на SELECT INTO OUTFILE?

  2. разлика между първичен ключ и уникален ключ

  3. Как да се свържете с MySQL или MariaDB база данни

  4. Как да надстроите MySQL на CentOS

  5. Как да получите размера на MySQL таблицата за таблици в базата данни?