Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como reter a barra invertida ao escapar de cotações no MySQL – QUOTE()


Usar uma barra invertida para escapar de aspas simples é uma técnica comumente usada para garantir que as aspas simples não interfiram no manuseio do MySQL da string completa.

Aspas simples são usadas para cercar uma string, portanto, uma aspa simples dentro da própria string pode causar estragos se não for escapado corretamente. Simplesmente inserir uma barra invertida imediatamente antes das aspas garante que o MySQL não termine a string prematuramente.

No entanto, pode haver ocasiões em que você deseja que a barra invertida permaneça. Por exemplo, você pode pretender usar a string em uma instrução SQL e, portanto, deseja que ela tenha um escape adequado primeiro.

É aqui que o QUOTE() função entra.

O QUOTE() do MySQL A função cita uma string para produzir um resultado que pode ser usado como um valor de dados com escape adequado em uma instrução SQL. A string é retornada entre aspas simples e com cada instância de barra invertida (\ ), aspas simples (' ), ASCII NUL e Control+Z precedidos por uma barra invertida.


Sintaxe da função QUOTE()


Veja como fica a sintaxe:
QUOTE(str)

Onde str é a string (já) escapada.

Exemplo


Um exemplo provavelmente explica isso melhor do que minha explicação:
SELECT QUOTE('Don\'t!') AS Result;

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

À primeira vista, você pode estar pensando “mas nada aconteceu – o resultado é exatamente o mesmo que o argumento”. No entanto, é exatamente por isso que essa função é útil. Se não tivéssemos usado o QUOTE() função, aqui está o que teria acontecido:
SELECT 'Don\'t!' AS Result;

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

Então, usando o QUOTE() função, mantemos as aspas simples e a barra invertida.

Claro, em muitos casos, isso é exatamente o que você quer. Em muitos casos, a barra invertida e as aspas ao redor devem ser removido. Mas pode haver alguns casos em que você quer exatamente o que QUOTE() função faz por você.

A alternativa


O QUOTE() função evita que você tenha que fazer algo assim:
SELECT '''Don\\\'t!''' AS Result;

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

Assim, evita-se que tenhamos que usar três aspas simples para cada aspas simples e três barras invertidas para cada barra invertida.