Použití zpětného lomítka k uzavření jednoduchých uvozovek je běžně používaná technika, která zajišťuje, že jednoduché uvozovky nebudou narušovat práci MySQL s celým řetězcem.
Jednoduché uvozovky se používají k ohraničení řetězce, takže jediná uvozovka v samotném řetězci by mohla způsobit zmatek, pokud by nebyla správně uvozena. Pouhé vložení zpětného lomítka bezprostředně před uvozovku zajistí, že MySQL neukončí řetězec předčasně.
Mohou však nastat situace, kdy chcete, aby zpětné lomítko zůstalo. Například můžete mít v úmyslu použít řetězec v příkazu SQL, a proto chcete, aby byl nejprve správně escapován.
Zde se nachází QUOTE()
funkce přichází.
MySQL QUOTE()
funkce uvozuje řetězec, aby vytvořila výsledek, který lze použít jako správně escapovanou datovou hodnotu v příkazu SQL. Řetězec je vrácen v jednoduchých uvozovkách a s každou instancí zpětného lomítka (\
), jednoduchá uvozovka ('
), ASCII NUL
a Control+Z předchází zpětné lomítko.
Syntaxe funkce QUOTE()
Zde je návod, jak probíhá syntaxe:
QUOTE(str)
Kde str
je (již) uniklý řetězec.
Příklad
Příklad to pravděpodobně vysvětluje lépe než moje vysvětlení:
SELECT QUOTE('Don\'t!') AS Result;
Výsledek:
+-----------+ | Result | +-----------+ | 'Don\'t!' | +-----------+
Na první pohled si možná říkáte „ale nic se nestalo – výsledek je úplně stejný jako argument“. Nicméně právě proto je tato funkce užitečná. Pokud bychom nepoužili QUOTE()
funkce, stalo by se toto:
SELECT 'Don\'t!' AS Result;
Výsledek:
+--------+ | Result | +--------+ | Don't! | +--------+
Takže pomocí QUOTE()
zachováme jednoduché uvozovky a zpětné lomítko.
Samozřejmě, v mnoha případech je to přesně to, co chcete. V mnoha případech zpětné lomítko a okolní uvozovky měly být odstraněn. Ale mohou nastat případy, kdy budete chtít přesně to, co QUOTE()
funkce dělá za vás.
Alternativa
QUOTE()
Funkce vás ušetří od nutnosti dělat něco takového:
SELECT '''Don\\\'t!''' AS Result;
Výsledek:
+-----------+ | Result | +-----------+ | 'Don\'t!' | +-----------+
Takže nás to ušetří nutnosti používat tři jednoduché uvozovky pro každou jednotlivou uvozovku a tři zpětná lomítka pro každé jedno zpětné lomítko.