sql >> Databasteknik >  >> RDS >> Mysql

Hur man behåller snedstrecket när man undslipper citat i MySQL – CITAT()

Att använda ett omvänt snedstreck för att undvika enstaka citattecken är en vanlig teknik för att säkerställa att de enskilda citattecken inte stör MySQL:s hantering av hela strängen.

Enstaka citattecken används för att omge en sträng, så ett enstaka citattecken i själva strängen kan orsaka förödelse om den inte är korrekt escaped. Att helt enkelt infoga ett omvänt snedstreck omedelbart före citattecknet säkerställer att MySQL inte avslutar strängen i förtid.

Det kan dock finnas tillfällen där du vill att backslashen ska finnas kvar. Du kanske till exempel tänker använda strängen i en SQL-sats, och därför vill du att den ska escapes ordentligt först.

Det är här QUOTE() funktion kommer in.

MySQL QUOTE() funktion citerar en sträng för att producera ett resultat som kan användas som ett korrekt escaped datavärde i en SQL-sats. Strängen returneras omgiven av enkla citattecken och med varje instans av omvänt snedstreck (\ ), enkla citattecken (' ), ASCII NUL , och Control+Z föregås av ett snedstreck.

Syntax för funktionen QUOTE()

Så här går syntaxen till:

QUOTE(str)

Där str är den (redan) escaped strängen.

Exempel

Ett exempel förklarar förmodligen detta bättre än min förklaring:

SELECT QUOTE('Don\'t!') AS Result;

Resultat:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Vid första anblicken kanske du tänker "men ingenting hände - resultatet är exakt detsamma som argumentet". Men det är just därför den här funktionen är användbar. Om vi ​​inte hade använt QUOTE() funktion, här är vad som skulle ha hänt:

SELECT 'Don\'t!' AS Result;

Resultat:

+--------+
| Result |
+--------+
| Don't! |
+--------+

Så genom att använda QUOTE() funktion behåller vi de enskilda citattecken och snedstrecket.

Naturligtvis är det i många fall precis vad du vill. I många fall bör omvänt snedstreck och omgivande citat bli borttagen. Men det kan finnas vissa fall där du vill ha exakt vad QUOTE() funktion gör för dig.

Alternativet

QUOTE() funktionen sparar dig från att behöva göra något i stil med detta:

SELECT '''Don\\\'t!''' AS Result;

Resultat:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Så det räddar oss från att behöva använda tre enstaka citattecken för varje enskilt citat och tre snedstreck för varje enskilt snedstreck.


  1. Hierarkiska frågor i SQL Server 2005

  2. Automatisera indexdefragmentering i MS SQL Server Database

  3. Hur man utför rullande uppgraderingar för MySQL

  4. Hembryggt postgres trasigt