sql >> Base de Datos >  >> RDS >> Mysql

Cómo conservar la barra invertida al escapar de las comillas en MySQL - QUOTE ()

El uso de una barra invertida para escapar de las comillas simples es una técnica comúnmente utilizada para garantizar que las comillas simples no interfieran con el manejo de MySQL de la cadena completa.

Las comillas simples se usan para rodear una cadena, por lo que una comilla simple dentro de la cadena en sí podría causar estragos si no se escapa correctamente. La simple inserción de una barra invertida inmediatamente antes de las comillas garantiza que MySQL no finalice la cadena de forma prematura.

Sin embargo, puede haber ocasiones en las que desee que se mantenga la barra invertida. Por ejemplo, podría tener la intención de usar la cadena en una instrucción SQL y, por lo tanto, desea que primero se escape correctamente.

Aquí es donde QUOTE() entra la función.

MySQL QUOTE() La función cita una cadena para producir un resultado que se puede usar como un valor de datos con escape adecuado en una instrucción SQL. La cadena se devuelve entre comillas simples y con cada instancia de barra invertida (\ ), comillas simples (' ), ASCII NUL y Control+Z precedido por una barra invertida.

Sintaxis de la función QUOTE()

Así es como funciona la sintaxis:

QUOTE(str)

Donde str es la cadena (ya) escapada.

Ejemplo

Un ejemplo probablemente explique esto mejor que mi explicación:

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

Resultado:

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

A primera vista, podría estar pensando "pero no pasó nada, el resultado es exactamente el mismo que el argumento". Sin embargo, es exactamente por eso que esta función es útil. Si no hubiéramos usado QUOTE() función, esto es lo que habría sucedido:

SELECT 'Don\'t!' AS Result;

Resultado:

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

Entonces, usando QUOTE() conservamos las comillas simples y la barra invertida.

Por supuesto, en muchos casos, esto es exactamente lo que quieres. En muchos casos, la barra invertida y las comillas circundantes deberían Ser eliminado. Pero puede haber algunos casos en los que desee exactamente lo que QUOTE() función hace por usted.

La alternativa

El QUOTE() le evita tener que hacer algo como esto:

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

Resultado:

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

Por lo tanto, nos evita tener que usar tres comillas simples para cada comilla simple y tres barras invertidas para cada barra invertida.