Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JSON_UNQUOTE() – Usuń cytaty z dokumentu JSON w MySQL

W MySQL, JSON_UNQUOTE() funkcja „odnotowuje” dokument JSON i zwraca wynik jako utf8mb4 ciąg.

Podajesz dokument JSON jako argument, a funkcja zrobi resztę.

Składnia

Składnia wygląda tak:

JSON_UNQUOTE(json_val)

Gdzie json_val jest dokumentem JSON, którego nie chcesz cytować.

Przykład

Oto przykład do zademonstrowania.

SET @data = '"Homer Simpson"';
SELECT 
  @data Original, 
  JSON_UNQUOTE(@data) Unquoted;

Wynik:

+-----------------+---------------+
| Original        | Unquoted      |
+-----------------+---------------+
| "Homer Simpson" | Homer Simpson |
+-----------------+---------------+

Znaki ucieczki

Sposób, w jaki ta funkcja obsługuje znaki ucieczki, zależy od tego, czy NO_BACKSLASH_ESCAPES jest włączony lub wyłączony.

Gdy NO_BACKSLASH_ESCAPES jest wyłączone

NO_BACKSLASH_ESCAPES tryb jest domyślnie wyłączony w MySQL 8.0.

Oto, co się stanie, jeśli dodamy \t aby określić znak tabulacji w ciągu, gdy NO_BACKSLASH_ESCAPES jest wyłączony i bez przy użyciu JSON_UNQUOTE() .

SET @data = '"Homer \t Simpson"';
SELECT 
  @data Original;

Wynik:

+-------------------+
| Original          |
+-------------------+
| "Homer 	 Simpson" |
+-------------------+

A oto, co się stanie, jeśli użyjemy JSON_UNQUOTE() :

SET @data = '"Homer \t Simpson"';
SELECT JSON_UNQUOTE(@data) Unquoted;

Wynik:

ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_unquote: "Invalid escape character in string." at position 7.

Możemy to obejść, używając dwóch ukośników odwrotnych (\\t ). Pamiętaj jednak, że zrobienie tego zmieni wynik, gdy nie przy użyciu JSON_UNQUOTE() .

SET @data = '"Homer \\t Simpson"';
SELECT 
  @data Original, 
  JSON_UNQUOTE(@data) Unquoted;

Wynik:

+--------------------+-----------------+
| Original           | Unquoted        |
+--------------------+-----------------+
| "Homer \t Simpson" | Homer 	 Simpson |
+--------------------+-----------------+

Gdy NO_BACKSLASH_ESCAPES jest włączone

Oto, co się dzieje, gdy włączymy NO_BACKSLASH_ESCAPES przed uruchomieniem poprzedniej instrukcji:

SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SET @data = '"Homer \\t Simpson"';
SELECT 
  @data Original, 
  JSON_UNQUOTE(@data) Unquoted;

Wynik:

+---------------------+------------------+
| Original            | Unquoted         |
+---------------------+------------------+
| "Homer \\t Simpson" | Homer \t Simpson |
+---------------------+------------------+

A oto, co się stanie, jeśli usuniemy pierwszy ukośnik odwrotny:

SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
SET @data = '"Homer \t Simpson"';
SELECT 
  @data Original, 
  JSON_UNQUOTE(@data) Unquoted;

Wynik:

+--------------------+-----------------+
| Original           | Unquoted        |
+--------------------+-----------------+
| "Homer \t Simpson" | Homer 	 Simpson |
+--------------------+-----------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 najlepszych narzędzi do monitorowania MySQL

  2. Instalacja MySQL

  3. Polecenia MySQL:Ściągawka z popularnych zapytań MySQL

  4. Jak wybrać cały wiersz, który ma największy identyfikator w tabeli?

  5. Uruchamianie plików MySQL *.sql w PHP