STATEMENT_DIGEST_TEXT() în MySQL

Criptare și hash MySQL 8.0+

Returnează forma normalizată a unei instrucțiuni SQL: valorile devin ?, iar numele primesc ghilimele inverse.

Sintaxă
STATEMENT_DIGEST_TEXT(instructiune)

Ce face STATEMENT_DIGEST_TEXT()

STATEMENT_DIGEST_TEXT() arată cum vede MySQL o interogare când o grupează cu altele asemănătoare: valorile sunt înlocuite cu ?, cuvintele cheie sunt scrise cu majuscule, iar numele de tabele și coloane sunt puse între `.

Este același text care apare în coloana DIGEST_TEXT din performance_schema.events_statements_summary_by_digest. Lungimea maximă depinde de variabila max_digest_length.

Parametri

Parametru Descriere
instructiune Textul unei instrucțiuni SQL.

Ce returnează

Textul normalizat sau NULL.

Exemple

Exemplul 1: Interogări normalizate

La INSERT, lista de rânduri este scurtată la (...) /* , ... */, ca un INSERT cu 2 rânduri și unul cu 100 de rânduri să aibă aceeași formă.

SELECT STATEMENT_DIGEST_TEXT('select nume, pret from produse where id = 5 and stoc > 0') AS normalizat;
SELECT STATEMENT_DIGEST_TEXT("INSERT INTO clienti VALUES (1, 'Ana'), (2, 'Dan')") AS insert_normalizat;

Rezultat

+---------------------------------------------------------------------+
| normalizat                                                          |
+---------------------------------------------------------------------+
| SELECT `nume` , `pret` FROM `produse` WHERE `id` = ? AND `stoc` > ? |
+---------------------------------------------------------------------+
+------------------------------------------------+
| insert_normalizat                              |
+------------------------------------------------+
| INSERT INTO `clienti` VALUES (...) /* , ... */ |
+------------------------------------------------+

Greșeli frecvente

  • Trimiți un text care nu este SQL valid. Funcția îl analizează cu parserul MySQL și dă eroare de sintaxă.

Comenzi înrudite

  • STATEMENT_DIGEST(): Returnează amprenta (hash SHA-256) unei instrucțiuni SQL, aceeași pentru interogări care diferă doar prin valori.
  • FORMAT_PICO_TIME(): Transformă un timp în picosecunde într-un text ușor de citit: 3.50 ns, 250.00 ms, 3.15 min.