Hola a todos,
El otro día me plantearon la siguiente curiosidad. Hago una tabla y en un
campo varchar introduzco datos numéricos y no numéricos, hago una vista para
filtrar sólo los numéricos. Si luego hago una select sobre la vista
funciona, pero si esa select lleva una condición where da error. Aquí tenéis
un script que reproduce dicha curiosidad:
(Por supuesto no vamos a entrar en hacerlo de otra forma con los números en
columnas numéricas, simplemente estudiar este caso)
use Pruebas
GO
drop table mezcla
GO
create table mezcla(id int identity(1, 1), pupurri varchar(20))
GO
insert into mezcla values('pepe')
insert into mezcla values('001')
insert into mezcla values('15')
insert into mezcla values('juan')
insert into mezcla values('1')
insert into mezcla values('150')
GO
create view solonum as
select id, cast(pupurri as int) num
from mezcla
where pupurri not like '%[A-Z]%'
and pupurri like '%[0-9]%'
GO
select *
from solonum
select *
from solonum
where num = 15
El mensaje es el siguiente:
Mens. 245, Nivel 16, Estado 1, Línea 1
Error de conversión al convertir el valor varchar 'pepe' al tipo de datos
int.
El problema es que esto ya lo tienen implementado sobre 2000 (que funciona
correctamente) y ahora para migrar a 2005 se encuentran con el error.
Qué soluciones se os ocurren, a parte de crear nuevas columnas u otras
modificaciones en el diseño ?
Muchas gracias
Un saludo
Salvador Ramos
www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm
Leer las respuestas