Conduce Chile
General => De Todo Un Poco => Mensaje iniciado por: Mithrandir en Febrero 07, 2013, 10:07:16 am
-
estiamados, tengo un pequeño dolor de cabeza con SQL 2008
tengo un campo que el formato es asi
AHO;45698741125522157 ,
uno es el tipo de cuenta y el otro es el numero de cuenta
necesito separarlos en 2 campos al realizar la consulta pero el tipo de cuenta puede ser de 0 hasta 7 caracteres y el otro entre 15 y 20 caracteres
-
tienes primero que meter en una variable (pos) la posicion del ";", luego separas..
;)
-
no me funko..... :'( :'( :'( :'(
-
no me funko..... :'( :'( :'( :'(
postea la query..
-
No caché mucho el problema, pero te sirve algo así?:
Select ...........* from.................... Where SUBSTRING(columna1, 1, 10) = ..............
-
estimados esta es la query, los campos que necesito separar son CTA.Cpa_Numero_Cuenta, este campo posee los 2 campos que necesito
select CTA.Cpa_Numero_Cuenta,
CTA.cpa_numero_cuenta,
PAR.Par_rut_Participe,
PAR.Par_Dv,
CUO.cue_numero_cuenta,
CUO.Fmu_Fondo,
SOL.sol_moneda,
SOl.SOL_TOTAL_SOLICITUD,
SOL.Sol_Fecha_Ingreso,
SOl.Sol_Fecha_Pago,
Sol.Sol_Inversion_Periodica,
PAR.Age_Agente
from Fmu_Cuenta_Bancaria_Participes CTA
inner join Fmu_Participes PAR
on CTA.Par_rut_Participe = par.Par_rut_Participe
inner join Fmu_Solicitudes SOl
on CTA.Par_rut_Participe = SOl.Par_rut_Participe
inner join fmu_saldo_cuotas CUO
on CTA.Par_rut_Participe = CUO.Par_rut_Participe
-
No tienen ancho fijo??? Si no tienen un ancho fijo y están metidos en un mismo campo, lo considero un error de diseño.
Está complicado, pero no imposible, déjame darle una vuelta pero se me ocurre que podrías crear una función almacenada y ahí meter el código que necesitas.
Otra consulta: necesitas separarlos para aplicarle la condición de búsqueda? ó sólo para obtener columnas separadas? (Where).
-
No tienen ancho fijo??? Si no tienen un ancho fijo y están metidos en un mismo campo, lo considero un error de diseño.
Está complicado, pero no imposible, déjame darle una vuelta pero se me ocurre que podrías crear una función almacenada y ahí meter el código que necesitas.
Otra consulta: necesitas separarlos para aplicarle la condición de búsqueda? ó sólo para obtener columnas separadas? (Where).
es solo para obtener columnas separadas, el primero es de largo 5 y el otro de largo 20, y si no tiene 20 caracteres se rellenan con 0 a la izquierda
ese es el resultado, es una insert select a una tabla de trabajo. lo otro que el campo que dice CCT no siempre viene informada
CCT ; 64500025750
CCT ; 64500025750
CCT ; 64500025750
CCT ; 64500025750
CCT ; 54300015185
CCT ; 54300015185
CCT ; 54300015185
es parte de un SP, y aca en el banco son un poco especiales en estos casos, asi que entre mas simple la solucion mejor
-
es solo para obtener columnas separadas, el primero es de largo 5 y el otro de largo 20, y si no tiene 20 caracteres se rellenan con 0 a la izquierda
ese es el resultado, es una insert select a una tabla de trabajo. lo otro que el campo que dice CCT no siempre viene informada
CCT ; 64500025750
CCT ; 64500025750
CCT ; 64500025750
CCT ; 64500025750
CCT ; 54300015185
CCT ; 54300015185
CCT ; 54300015185
es parte de un SP, y aca en el banco son un poco especiales en estos casos, asi que entre mas simple la solucion mejor
Ah, entonces substring es lo que necesitas.
-
Envíaselo al de IT para que lo arregle..... :tumtum:
-
Envíaselo al de IT para que lo arregle..... :tumtum:
(http://mispeliculasdeterror.com/wp-content/uploads/2012/06/it-eso.jpg)
:tumtum: :tumtum:
-
Ah, entonces substring es lo que necesitas.
ya perfecto tengo una parte de la query echa, pero el problema es que si no tiene el prefijo AHO, CCT, etc, me toma los 5 primeros caracteres ya sea desde el numero de la cuenta o de los prefijos que necesito, los 2 primeros estan incorrectos, los 2 ultimos estan bien
deberia quedar asi
Campo 1 campo 2
00000000000001049854
00000000000001049854
00000000064500025750 CCT
00000000064500025750 CCT
no asi
campo 1 campo 2
54 10498
54 10498
64500025750 CCT
64500025750 CCT
-
alguien????
-
???
-
Disculpa he estado con mucha pega. Pero tu problema claramente tiene la complicación que al no tener 2 variables en 1 solo campo, y estos no están con una nomenclatura lógica, es difícil que puedas usar funciones integradas de sql server. Creo que deberás hacer tu propia función y después llamarla desde el query. Con esto pierdes un poco de rendimiento en los query dependiendo de los procesos que necesites para obtener los campos. Para llamar a tu función deberás por algo así:
select ................, dbo.mifunción1(CTA.Cpa_Numero_Cuenta), .........* from.............
Anteponiendo el nombre del usuario propietario de la función, que en este caso es dbo.
-
Disculpa he estado con mucha pega. Pero tu problema claramente tiene la complicación que al no tener 2 variables en 1 solo campo, y estos no están con una nomenclatura lógica, es difícil que puedas usar funciones integradas de sql server. Creo que deberás hacer tu propia función y después llamarla desde el query. Con esto pierdes un poco de rendimiento en los query dependiendo de los procesos que necesites para obtener los campos. Para llamar a tu función deberás por algo así:
select ................, dbo.mifunción1(CTA.Cpa_Numero_Cuenta), .........* from.............
Anteponiendo el nombre del usuario propietario de la función, que en este caso es dbo.
me dejaste pillo, no cacho como implementar eso :oops: :oops: :wtf: :wtf: :wtf: :wtf: :wtf:
-
me dejaste pillo, no cacho como implementar eso :oops: :oops: :wtf: :wtf: :wtf: :wtf: :wtf:
Acá tienes un ejemplo.
http://www.devtroce.com/2010/01/18/crear-e-invocar-funciones-udf-en-sql-server/ (http://www.devtroce.com/2010/01/18/crear-e-invocar-funciones-udf-en-sql-server/)
La gracia de las funciones escalares, es que puedes aplicar loops, if-else, y todo lo que quieras que está incorporado en el lenguaje almacenado. :thumbsup:
Muy útil y fácil.
-
así con el xv.... :risa2: :risa2:
suerte con lo que necesitas, están hablando en chino para el común de los cristianos y moros.
-
me dejaste pillo, no cacho como implementar eso :oops: :oops: :wtf: :wtf: :wtf: :wtf: :wtf:
pero necesitas solo una query?
o puede ser un SP???????
-
pero necesitas solo una query?
o puede ser un SP???????
es una query dentro de un sp
-
es una query dentro de un sp
Estimado.
la mejor solucion como lo dice negroVelozVirus.
usa SUBSTRING vaz jugando con las posiciones o con el CHARINDEX la posicion del caracter que los separa
y si necesitas llenar con 0, usas select RIGTH('0000' + '10',5)
Ojalas te sirva
saludos