Hola a todos
quiero hacer un upddate en una tabla buscando los valores en otra tabla, el
problema es que las relaciones entre tablas son entre campos varchar aunque
en la mayoria de los casos deverian contener valores validos como numericos
por ello busco una forma que cruze valores tal que '012345' y '12345' y que
no se pare cuando encuentre '12x45'
el ejemplo que tengo es
UPDATE tabla1
SET campo4 = tabla2.campo4
from tabla1, tabla2
where
tabla1.campo1 = tabla2.campo1
pero no funciona para '012345' y '12345', pruebo entonces cambiando el where
a
where
cast(tabla1.campo1 as bigint) = cast(tabla2.campo1 as bigint)
pero, por supuesto, se para cuando encuentra alguna valor no numerico, asi
pense en ::
where
case when (isnumeric(tabla1.campo1 ))
then cast(tabla1.campo1 as bigint)
else tabla1.campo1
end
case when (isnumeric(tabla2.campo1 ))
then cast(tabla2.campo1 as bigint)
else tabla2.campo1
end
intentando que en caso de encontrar un valor que se pueda convertir a bigint
lo compare como bigint, y si no utilice varchar, pero el error devuelto es
::
Server: Msg 156, Level 15, State 1, Line 14
Incorrect syntax near the keyword 'then'.
quizas tambien me sirviera alguna funcion que me permitira eliminar los
ceros del principio y comparar las cadenas, pero que no eliminara los ceros
intermedios
alguna idea, gracias por adelantado
Leer las respuestas