SQL - Como evitar caracteres especiales en una consulta sql

   
Vista:

Como evitar caracteres especiales en una consulta sql

Publicado por Raidel (2 intervenciones) el 20/05/2015 16:28:17
Hola
Utilizo un algoritmo para encriptar una contraseña que luego guardo en una base de datos. Dentro de los caracteres que genera la encriptación está el caracter especial \ y a la hora de insertar la contraseña encriptada da error la consulta. ¿Cómo puedo hacer para que sql no vea \ como un caracter especial?
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como evitar caracteres especiales en una consulta sql

Publicado por leonardo_josue (878 intervenciones) el 20/05/2015 17:13:40
Hola Raidel:

No entiendo a qué te refieres con que "no se vea \ como un caracter especial'... sobre todo porque SI ES UN CARACTER ESPECIAL... en la mayoría de los DBMS se utiliza como caracter de escape para otros caracteres... Supongo que a lo que te refieres es a cómo hacer para que este caracter se tome literal, es decir, no como caracter de escape.

No nos dices con qué Base de datos estas trabajando, por lo tanto es un tanto difícil darte una respuesta puntual, sin embargo pongo un ejemplo con MySQL que igual te sirve:

Supongamos que tienes una tabla con un campo VARCHAR y en donde queremos insertar las siguientes frases

1
2
3
-Esta frase tiene \ slash
-Esta frase 'tiene' comillas
-Esta frase \ 'tienes' ambas

Si intentas hacer las inserciones de la manera 'Común' es decir, asi:

1
2
3
INSERT INTO tabla VALUES (1, 'Esta frase tiene \ slash');
INSERT INTO tabla VALUES (2, 'Esta frase 'tiene' comillas');
INSERT INTO tabla VALUES (3, 'Esta frase \ 'tienes' ambas');


Te vas a encontrar con que tienes problemas, pues marca errores como que no se ha cerrado completamente la cadena o si inserta los valores no se muestran como queremos. Para insertar una barra invertida o slash (\) en un campo tipo caracter o una comilla simple, debes "matar" el caracter, anteponiendo otra diagonal invertida, es decir, una doble diagonal (\\) y diagonal con comilla (\') respectivamente.

los insert's quedarían así:

1
2
3
4
5
6
7
8
mysql> INSERT INTO tabla VALUES (1, 'Esta frase tiene \\ slash');
Query OK, 1 row affected (0.07 sec)
 
mysql> INSERT INTO tabla VALUES (2, 'Esta frase \'tiene\' comillas');
Query OK, 1 row affected (0.03 sec)
 
mysql> INSERT INTO tabla VALUES (3, 'Esta frase \\ \'tienes\' ambas');
Query OK, 1 row affected (0.12 sec)


De tal manera que la tabla se vería así:

1
2
3
4
5
6
7
8
9
mysql> SELECT * FROM tabla;
+------+-----------------------------+
| id   | descripcion                 |
+------+-----------------------------+
|    1 | Esta frase tiene \ slash    |
|    2 | Esta frase 'tiene' comillas |
|    3 | Esta frase \ 'tienes' ambas |
+------+-----------------------------+
3 rows in set (0.00 sec)

No sé si esto es lo que necesitas, si no, trata de ser un poco más claro con tu ejemplo, incluyendo el código que estás tratando de ejecutar.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como evitar caracteres especiales en una consulta sql

Publicado por Raidel (2 intervenciones) el 20/05/2015 17:58:27
Tu respuesta ha sido exelente, es justamente lo que necesitaba. Solo quiero especificar que el SGBD es Access. Supongo que la respueta me sirve de igual modo.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar