SQL - Substring u otra forma. Ayuda!

 
Vista:

Substring u otra forma. Ayuda!

Publicado por josh (2 intervenciones) el 21/05/2005 20:10:16
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 creo) y cLevel(contiene binario creo)de 76 espacios. El tema es el seguiente yo quiero que el codigo vaya viendo lugar por lugar(hasta terminar los 76 espacios)si tengo este hexadecimal: 8F00000000000080C410
Y si tengo 8 espacios con ese hexadecimal haga una cosa y si tengo 9 espcios con ese hex haga otra cosa.
Hasta ahora pude descifrar esto.
UPDATED Character --> aca actualiza esa tabla
SET cLevel = 1 -->pone cLevel =1 si
WHERE cLevel >400 and charindex(0x80,Inventory) %10=8
cLevel = 401 y en el inventario hay un item con ese hexadecimal. Para dar un poko mas de detalles en esta fila charindex(0x80,Inventory)%10=8 hace lo siguiente:
se fija en el inventario si hay un item que en la posicion 8 de ese hexadecimal haiga un 80

8F00000000000080C410
8F -> 1º posicion
00 -> 2º posicion
..
..
80 -> 8º posicion

El tema con este codigo es que solo se fija si en toda la columna inventario hay un item asi pero yo quiero que si en 8 lugares hay ese item haga una ocsa y si hay 9 haga otra cosa pero lo que no se es como contar espacio por espacio..yo habia pensado algo asi:

UPDATE Character
SET cLevel= '1'
WHERE cLevel>400 and substring(Inventory, charindex(0x8F,Inventory,13),1)= 3
Pero tambien lo toma a todo el inventario y no uno por uno. Agradeceria su ayuda o consejo en este codigo en el que estoy trabajando. Y disculpen si este post es medio newbie pero recien me inicio en esto de los foros. ATTE Josh!
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

Por favor aunque sea un tip

Publicado por josh (2 intervenciones) el 22/05/2005 18:53:00
Habia pensado tambien que podria hacer algo asi (no quiero usar if porque este codigo va en php y no me es compatible o no lo se poner) asi que tendria que ser algo asi pero no se porque no funciona:

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. Mas abajo lo que hago es preguntar si bandera es igual a un codigo hex que tenga en su primer lugar 8F...es el codigo que pongo en el post de arriba pero ni siquiera asi funciona...alguien puede remarcarme mis errores por favor. Muchas gracias desde ya!!
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

RE:Substring u otra forma. Ayuda!

Publicado por Isaías Islas (5072 intervenciones) el 23/05/2005 04:48:10
Pues lo unico que se me ocurre, es hacer una funcion de usuario (UDF), la cual reciba como pararametro tu columna cLevel y esta, descomponga con un SUBSTRING a partir de la posicion 21 y cuente los blancos que hay a partir de esta posicion.

Espero haberme explicado.
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