Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: proxy_lainux en Febrero 02, 2017, 03:53:34 AM

Título: [SOLUCIONADO] ¿Cómo hago peticiones sql cuando hay una "@"?
Publicado por: proxy_lainux en Febrero 02, 2017, 03:53:34 AM
¿Cómo logro hacer una petición sql cuando hay un @?

tengo en una columna de la que me gustaría sacar información, pero hay un problema...cuando lo hago me menciona este error

SQLITE_ERROR] SQL error or missing database (near "@s": syntax error)

trato de llamar un dato, por ejemplo

hola@mundo... pero no me deja

¿Alguien sabe la manera correcta de usar "WHERE hola@mundo" en SQL?
Título: Re:¿Cómo hago peticiones sql cuando hay una "@"?
Publicado por: 79137913 en Febrero 02, 2017, 09:34:21 AM
HOLA!!!

@proxy_lainux (https://underc0de.org/foro/index.php?action=profile;u=13727) :
hola@mundo es el nombre de un campo? de un parametro? de una funcion? una cadena de texto?

danos un poco mas de datos.

Que base de datos estas utilizando.

GRACIAS POR LEER!!!
Título: Re:¿Cómo hago peticiones sql cuando hay una "@"?
Publicado por: grep en Febrero 02, 2017, 11:13:46 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
SQLITE_ERROR] SQL error or missing database (near "@s": syntax error)

trato de llamar un dato, por ejemplo

hola@mundo... pero no me deja

¿Alguien sabe la manera correcta de usar "WHERE hola@mundo" en SQL?

¿hola@mundo es el nombre de la columna o es el valor contenido en un registro?

WHERE hola@mundo es un error en la sintaxis de SQLite.

Si hola@mundo es el valor de un registro, entonces una posible consulta sería:

SELECT * FROM MyTable WHERE ColumnName = 'hola@mundo';

o

SELECT * FROM MyTable WHERE ColumnName LIKE 'hola@mundo';

Por otro lado, si hola@mundo es el nombre de la columna, entonces debes colocar este nombre entre comillas dobles, corchetes o acentos graves.

Cuando el nombre de una tabla o columna tiene únicamente caracteres estándar (esto es, cualquier combinación de caracteres alfanuméricos incluyento el guion bajo "_") y su primer caracter no es un dígito, entonces puedes utilizar ese nombre sin problemas (recordar además que no se permite que una tabla, índice, vista o trigger tenga la palabra "sqlite_" al principio de su nombre ya que SQLite utiliza este patrón para todo internal schema object).
Si una tabla o una columna (estos se conocen genéricamente como Identifiers) contiene espacios, otros caracteres no estándar, o utiliza el nombre de una palabra reservada (keyword), entonces debes colocar este nombre entre comillas dobles (" "), corchetes ([ ]) o acentos graves (ASCII code 96) (` `).

* El mecanismo de quoting con comillas dobles (" ") es el estándar del lenguaje SQL.

* El mecanismo de quoting con corchetes ([ ]) es el que utiliza MS Access y SQL Server.

* El mecanismo de quoting con acentos graves (` `) es el que utiliza MySQL.


Entonces una consulta con la cláusula WHERE y un identificador con carácteres no estándar podría ser:


SELECT * FROM MyTable WHERE "hola@mundo" = 'MyValue';


o


SELECT * FROM MyTable WHERE "hola@mundo" LIKE 'MyValue';


fuente:
http://www.sqlite.org/lang_keywords.html
http://stackoverflow.com/questions/3694276/what-are-valid-table-names-in-sqlite

Saludos
Título: Re:¿Cómo hago peticiones sql cuando hay una "@"?
Publicado por: proteusi en Febrero 02, 2017, 12:41:47 PM
Muchas gracias tio, por la ayuda
Título: Re:¿Cómo hago peticiones sql cuando hay una "@"?
Publicado por: proxy_lainux en Febrero 02, 2017, 01:46:19 PM
El problema se solucionó leyendo la explicación de grep

gracias