QUOTE() în MySQL

Pune un text între apostrofuri și escapează caracterele speciale, ca să fie valid în SQL.

Sintaxă
QUOTE(sir)

Ce face QUOTE()

QUOTE() transformă o valoare într-un literal SQL sigur: o pune între apostrofuri și adaugă \ înaintea apostrofurilor, backslash-urilor și altor caractere speciale. Pentru NULL returnează cuvântul NULL, fără ghilimele.

Este util când generezi instrucțiuni SQL din SQL (de exemplu, un export de INSERT-uri).

Parametri

Parametru Descriere
sir Valoarea pusă între apostrofuri.

Ce returnează

Textul gata de folosit într-o instrucțiune SQL.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE clienti (
  id INT PRIMARY KEY,
  nume VARCHAR(50),
  oras VARCHAR(30),
  email VARCHAR(100),
  telefon VARCHAR(20)
);

INSERT INTO clienti VALUES
  (1, 'Ana Pop', 'Iași', 'ana.pop@exemplu.ro', '0722-123-456'),
  (2, 'bogdan ionescu', 'Cluj-Napoca', 'bogdan@firma.ro', '0744 555 101'),
  (3, 'Cristina Marin', 'Brașov', 'cristina@exemplu.ro', '0733.222.909'),
  (4, 'Dan Stoica', 'Timișoara', NULL, '0755123123');

Exemplul 1: Apostrof și NULL

SELECT QUOTE('O''Neil') AS cu_apostrof, QUOTE(NULL) AS nul;

Rezultat

+-------------+------+
| cu_apostrof | nul  |
+-------------+------+
| 'O\'Neil'   | NULL |
+-------------+------+

Exemplul 2: Generarea unor instrucțiuni INSERT

SELECT CONCAT('INSERT INTO clienti_vechi (nume, email) VALUES (', QUOTE(nume), ', ', QUOTE(email), ');') AS sql_generat
FROM clienti
ORDER BY id;

Rezultat

+-------------------------------------------------------------------------------------------+
| sql_generat                                                                               |
+-------------------------------------------------------------------------------------------+
| INSERT INTO clienti_vechi (nume, email) VALUES ('Ana Pop', 'ana.pop@exemplu.ro');         |
| INSERT INTO clienti_vechi (nume, email) VALUES ('bogdan ionescu', 'bogdan@firma.ro');     |
| INSERT INTO clienti_vechi (nume, email) VALUES ('Cristina Marin', 'cristina@exemplu.ro'); |
| INSERT INTO clienti_vechi (nume, email) VALUES ('Dan Stoica', NULL);                      |
+-------------------------------------------------------------------------------------------+

Greșeli frecvente

  • Folosești QUOTE() în aplicație în loc de interogări pregătite (prepared statements). Pentru datele venite de la utilizatori, interogările pregătite sunt metoda corectă împotriva SQL injection.

Comenzi înrudite

  • CONCAT: Lipește mai multe texte într-unul singur.
  • REPLACE(): Înlocuiește toate aparițiile unui text cu alt text.