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

Duda de un codigo en SQL

Estas en el tema de Duda de un codigo en SQL en el foro de Bases de Datos General en Foros del Web. Bueno antes que nada, gracias por leerme. Tengo un problema que no puedo solucionar. En mi BD tengo una tabla llamada "Character" y adentro hay ...
  #1 (permalink)  
Antiguo 23/05/2005, 13:40
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Busqueda Duda de un codigo en SQL

Bueno antes que nada, gracias por leerme. Tengo un problema que no puedo solucionar. En mi BD tengo una tabla llamada "Character" y adentro hay una columna llamada "Inventory"(Contiene Hex o sea es una columna tipo varbinary) de 76 espacios y cLevel(tipo:smallint ). El tema es el seguiente yo quiero que un codigo vaya viendo lugar por lugar(hasta terminar los 76 espacios de la columna Inventory) si tengo un item con este hexadecimal: 8F00000000000080C410
Al final de la revision quiero que si tengo solo 8 espacios con ese hexadecimal haga un tipo de trabajo y si tengo 9 espacios con ese hex haga otra cosa.
Hasta ahora pude descifrar esto.

UPDATE Character
SET bandera= substring(Inventory,30,4)
WHERE cLevel>500
UPDATE Character
SET cLevel= '1'
WHERE cLevel>500 and bandera = charindex(0x8F,Inventory,1)


*bandera es un varbinary y (supuestamente) toma la posicion 30 al 34 de la columna inventory. Mas abajo lo que hago es preguntar si bandera es igual a un codigo hex que tenga en su primer lugar 8F
[charindex(0x8F,Inventory,1), recuerden que el item hex que busco es 8F00000000000080C410]...es el codigo que pongo arriba pero ni siquiera asi funciona...alguien puede remarcarme mis errores por favor. Muchas gracias desde ya!!
PD: Creo que mi error es al igualar bandera a 8F ya que teoricamnte bandera tomaria 8F00000000000080C410, si es asi como podria solucionarlo???
PD2: No puedo usar if en este codigo porque va en php despues!
PD3: Disculpen si es medio newbie esta pregunta pero lo que pasa es que recien me inicio en SQL (y aun sabiendo c++ me es medio complicado). Bueno yo seguire averiguando sobre SQL en internet..Muchas gracias por su atencion y espero sus respuestas. ATTE josh.
  #2 (permalink)  
Antiguo 23/05/2005, 15:49
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Jamás he trabajado con hexadecimales dentro de SQL, pero.. has intentado convertirlo a cadena antes de hacer el charindex?

WHERE cLevel>500 and bandera = charindex(Convert(NVARCHAR,0x8F),Inventory,1)

Para hacer pruebas te recomiendo hacer selects con "inventory" y "charindex(0x8F,Inventory,1)" (o sus variaciones) para que veas cuales resultados son los que entrega tu sentencia.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 24/05/2005, 11:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
no la verdad no lo intente porque soy nuevo en esto de SQL, pero lo voy hacer y voy a ver que pasa. Otra cosa esta bien lo que hago aca:
Suponiendo que
Inventory=(8F000080C5,8F000080C6,8F000080X3,8F0000 80C1,8F000080W3)

bandera= substring(Inventory,1,4)

en este codigo lo que hago es dejar
bandera=(8F00,8F00,8F00,8F00)?????????
Gracias de antemano por sus respuestas!

Última edición por elche27; 27/05/2005 a las 13:15
  #4 (permalink)  
Antiguo 27/05/2005, 13:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Bueno che creo que la ultima pregunta no es dificil de contestar para los PRO....me basta con un SI o NO. Gracias!
  #5 (permalink)  
Antiguo 27/05/2005, 14:41
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Cita:
Iniciado por elche27
no la verdad no lo intente porque soy nuevo en esto de SQL, pero lo voy hacer y voy a ver que pasa. Otra cosa esta bien lo que hago aca:
Suponiendo que
Inventory=(8F000080C5,8F000080C6,8F000080X3,8F0000 80C1,8F000080W3)

bandera= substring(Inventory,1,4)

en este codigo lo que hago es dejar
bandera=(8F00,8F00,8F00,8F00)?????????
Gracias de antemano por sus respuestas!
Según esto no:
Código:
SELECT (0x8F000080C5), LEFT(0x8F000080C5, 4), LEFT(CONVERT(NVARCHAR, 0x8F000080C5), 4)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 28/05/2005, 08:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Gracias por apiadarte y contestar una pregunrta tan newbie como esta, lo que pasa es que estoy estudiando via internet y quiero tener ciertos conceptos basicos claros. Saludos!
  #7 (permalink)  
Antiguo 03/06/2005, 16:14
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Encontré esto y me acordé de ti.

Ojalá que te sirva de algo:
http://www.sqlservercentral.com/scri...tions/1497.asp
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 19:08.