Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

caracteres no validos en consultas sql

Estas en el tema de caracteres no validos en consultas sql en el foro de Bases de Datos General en Foros del Web. Hola, he buscado y no encuentro nada que me pueda decir el porque cuando hago una consulta a un campo que contiene un & (ampersand) ...
  #1 (permalink)  
Antiguo 14/09/2009, 03:08
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
caracteres no validos en consultas sql

Hola, he buscado y no encuentro nada que me pueda decir el porque

cuando hago una consulta a un campo que contiene un & (ampersand) ejm juan & pepe S.L,

me lo ignora, recorre la base de datos buscando juan & pepe y como si no

existira, utilizo paginas asp para pasar los datos.

Alguien sabe si este caracter no puede ser utilizado como nombre en sql??

Gracias de antemano

Saludos
  #2 (permalink)  
Antiguo 14/09/2009, 05:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: caracteres no validos en consultas sql

La respuesta es simple: TODOS los lenguajes, sean de programación como de consulta (SQL) usan ese y otros símbolos como parte de sus operaciones lógicas o de función. TODOS.
Tu problema, más que deberse al uso en el lenguaje, debe estar en la forma que construyes el string de la consulta. Sin verla es imposible saber dónde está el problema.
En tu explicación, parece que el caso juan & pepe fuese un sólo nombre. ¿Es así o se trata de dos condiciones de igualdad diferentes? La respuesta peude ser diferente en cada caso.

Postea la consulta con algún dato real, y no pongas código de programación, sólo SQL, ya que el código de programación suele esconder el problema a nuestra vista.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/09/2009, 01:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: caracteres no validos en consultas sql

hola y gracias por responder, cuando digo juan & pepe en un nombre de empresa que esta almacenado en una base de datos access hago la consulta,
cargo los combres en un combo mediante asp y lo envio a una pagina asp donde busca el nombre del combo por sql y asp, no se si el problema estará en la manera de pasar los datos entre páginas?

empresa1=ucase(Trim(request.querystring("comboempr esa")))
...
..
..
sql = "SELECT * FROM claves WHERE ncomercial = '"& empresa1 &"' "

gracias de nuevo
  #4 (permalink)  
Antiguo 16/09/2009, 05:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: caracteres no validos en consultas sql

En tu ejemplo:
Código sql:
Ver original
  1. SELECT * FROM claves WHERE ncomercial = '"& empresa1 &"'

Si el contenido de empresa1 es "juan & pepe", el resultado final sería:

Código sql:
Ver original
  1. SELECT * FROM claves WHERE ncomercial = 'juan & pepe';

Con lo que lo que estás buscando es una empresa que se llame "juan & pepe". Si lo que quieres es que te devuelva es aquellos cuyos nombres de empresa contengan "juan" y "pepe", debes emplear expresiones regulares como LIKE, y separar ambos componentes (en este momento componen un sólo objeto):
Código sql:
Ver original
  1. SELECT *
  2. FROM claves
  3. WHERE
  4.           ncomercial LIKE '%juan%' AND ncomercial LIKE  '%pepe%';
Si quieres que busque uno u otro, hay que cambiar AND por OR:
Código sql:
Ver original
  1. SELECT *
  2. FROM claves
  3. WHERE
  4.           ncomercial LIKE '%juan%' OR ncomercial LIKE  '%pepe%';

Uno de tus problemas es que, igual que en cualquier lenguaje de programación, cuando tienes que comparar dos valores con una misma variable, debes comparar cada uno con ella, no ponerlos en bloque.
En SQL, existe una forma de comparar un campo con un conjunto de valores listados, pero no es aplicable a este modelo, porque no opera con LIKE. Se trata de IN ANY(subconsulta).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 22/09/2009, 03:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: caracteres no validos en consultas sql

el problema es que el valor viene desde un combo en un documento html, este este es enviado a un documento asp, que recoge la variable pasada por url, hay cientos de clientes y no se cuantos contienen un &...si solo fuera uno podria separarlo sin problema pero no es el caso, no hay forma que hace una consulta que contenga el "&" ??

Gracias de nuevo
  #6 (permalink)  
Antiguo 22/09/2009, 19:43
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Respuesta: caracteres no validos en consultas sql

Lo que está ocurriendo es que realmente no le estás pasando un ampersand. SQL no "ignora" el ampersand ni tenerlo en un campo de texto impedirá que encuentres un valor determinado.
Probablemente le estés pasando algo como juan & pepe S.L o incluso podrías estarle pasando los valores como urlencode.
Si estás usando SQL Server, activa tu profiler y asegúrate de que estés enviando los valores correctos. Mejor aún, activa las opciones de depuración de tu IIS e intenta poner un break point para que veas lo que va pasando.

Saludos.
  #7 (permalink)  
Antiguo 30/09/2009, 02:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: caracteres no validos en consultas sql

definitivamente creo q el problema esta al pasar la variable, "pagina.html? empresa= pepe & juan" no lo toma como un valor... lo toma como independientes, aunq este valor viene de un combo

edito: el problema es que me esta pasando un valor de un combo que lleva un (ampersand"&") separado es decir "pepe & juan" y creo que a tener un & me trata pepe y juan de manera independiente pq se usa para separar variables, hay alguna forma de enviar esto como "bloque", codena de caracteres o algo asi??

alguien sabe algo?

Gracias de nuevo

Última edición por nekosoft; 30/09/2009 a las 02:31
  #8 (permalink)  
Antiguo 30/09/2009, 04:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: caracteres no validos en consultas sql

A ver si entiendo bien: El combo contiene una opción donde aparece "juan & pepe", y ambos nombres son valores diferentes que se deben enviar?
¿Eso sería?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 30/09/2009, 06:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: caracteres no validos en consultas sql

especifico

pagina "seleccion.html"
html:

-tiene un combo que accede a una base de datos acces con nombres de empresas
-al seleccionar el valor del combo este automaticamente (sin botones ni enter) envia el dato a "mostrar.asp" por URL seleccion.html?comboempresa=loquesea

-los datos son nombres tipo"constructora de puertos s.l" nombres largos, funciona bien con todo excepto los de tipo (" consultoria juan & pepe") los que tienen ampersand

pagina "mostrar.asp"
asp

-recibe variable y la guarda en empresa1

empresa1=ucase(Trim(request.querystring("comboempr esa")))

-pero si el nombre tenia ampersand el nombre llega incompleto
ejm
-juan & pepe , recibiria solo juan, del "&" en adelante nada

por eso preguntaba si hay manera de enviar los datos por URL como texto como en otros lenguajes pues entre comillas por ejm ("juan y pepe")

espero se entienda mejor

Saludos y gracias por vuestro tiempo
  #10 (permalink)  
Antiguo 30/09/2009, 07:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: caracteres no validos en consultas sql

Cita:
pagina "mostrar.asp"
asp

-recibe variable y la guarda en empresa1

empresa1=ucase(Trim(request.querystring("comboempr esa")))

-pero si el nombre tenia ampersand el nombre llega incompleto
ejm
-juan & pepe , recibiria solo juan, del "&" en adelante nada
Yep. Ahora se entiende: Tienes un problema con la programación de HTML y ASP....
Es un problema parecido a algunos que ocurren en PHP con ciertos símbolos y caracteres, para los cuales la transferencia de datos entre páginas debe hacerse con funciones y parámetros determinados, de modo que no se generen errores en los datos. Hace unos días estuve con un problema de ese tipo en ese lenguaje, por eso lo recuerdo.
Mi sugerencia es que consultes en el Foro de ASP, donde sin duda habrá alguien que conozca el problema y su solución. Puede que también debas preguntar en el foro de HTML.
Lo que sí puedo asegurarte, es que no tiene nada que ver con la base de datos, para cuando el dato llega a la base, el problema ya existe.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 01/10/2009, 01:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: caracteres no validos en consultas sql

Gracias Gnzsoloyo, el problema ya lo tengo localizado, ahora el problema es que no se como solucionar esto sin transtocar mucho el código, el problema es que paso la variable por url, este sistema separa las variables mediente "&", por eso no llega el dato completo, tengo que buscar la forma de pasar cadenas de caracteres completas sin que afecten los simbolos y demás. Como dices me pasaré por el foro de ASP y HTML

Gracias de nuevo y saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:04.