Conversión a numeric

19/04/2007 - 00:40 por Chevy | Informe spam
Hola Grupo,

tengo un campo tipo varchar(50) el cual se supone que contiene cadenas que
se deben convertir a un numeric(18,5).

La funcion CONVERT sobre ese campo me dice que no puede convertir varchar a
numeric.
Le paso la función ISNUMERIC al campo y dice que todos los valores son
numéricos.
Reviso en detalle y veo que la función ISNUMERIC reconoce como valores
numéricos las cadenas '.' , ',' , '-' y el '+', y que la función CONVERT no
puede procesar.

La pregunta es, cómo puedo determinar los registros de esa tabla que la
función CONVERT no puede procesar, porque la funcion ISNUMERIC en realidad no
me da el 100% de confianza en que el valor se puede convertir.

Otro problema que tengo es que algunos valores de ese campo tienen
caracteres ASCCI no imprimibles, al observarlos, pareciera que son cadenas
que se pueden convertir pero si se revisa caracter por caracter en la cadena,
se encuentra un caracter no numérico que impide el "casteo" a NUMERIC. Aquí,
lo que necesitaría es una función para hallar esos caracteres y poder
eliminarlos para que la cadena quede limpia y se pueda convertir a NUMERIC.

Tabla X
cadenaNUM CONVERTNumeric ISNUMERIC(cadenaNUM )
1054.33 1054.33 1
. error 1
+ error 1

mil gracias por sus sugerencias

Eusebio

Preguntas similare

Leer las respuestas

#1 Maxi
19/04/2007 - 02:14 | Informe spam
Hola, creo que hay algo conceptual que estas mal interpretando. Vos no
queres convertir a un numeric sino a decimal.
Francamente esto esta mal asi, porque si el tipo de datos es decimal se
guarda en un char 50? eso no esta nada bien, el tipo de dato deberia
representar lo que realmente guardes y de no ser asi no habra control sobre
esa propiedad.

"Chevy" wrote in message
news:
Hola Grupo,

tengo un campo tipo varchar(50) el cual se supone que contiene cadenas que
se deben convertir a un numeric(18,5).

La funcion CONVERT sobre ese campo me dice que no puede convertir varchar
a
numeric.
Le paso la función ISNUMERIC al campo y dice que todos los valores son
numéricos.
Reviso en detalle y veo que la función ISNUMERIC reconoce como valores
numéricos las cadenas '.' , ',' , '-' y el '+', y que la función CONVERT
no
puede procesar.

La pregunta es, cómo puedo determinar los registros de esa tabla que la
función CONVERT no puede procesar, porque la funcion ISNUMERIC en realidad
no
me da el 100% de confianza en que el valor se puede convertir.

Otro problema que tengo es que algunos valores de ese campo tienen
caracteres ASCCI no imprimibles, al observarlos, pareciera que son cadenas
que se pueden convertir pero si se revisa caracter por caracter en la
cadena,
se encuentra un caracter no numérico que impide el "casteo" a NUMERIC.
Aquí,
lo que necesitaría es una función para hallar esos caracteres y poder
eliminarlos para que la cadena quede limpia y se pueda convertir a
NUMERIC.

Tabla X
cadenaNUM CONVERTNumeric ISNUMERIC(cadenaNUM )
1054.33 1054.33 1
. error 1
+ error 1

mil gracias por sus sugerencias

Eusebio
Respuesta Responder a este mensaje
#2 Chevy
19/04/2007 - 15:28 | Informe spam
Gracias Maxi,

Olvidé comentar que la tabla con el tipo de datos varchar y cuyos datos
quiero pasar a un tip de datos NUMERIC es una tabla que se importó de un
archivo plano proveniente de un sistema llamado PICK (es una base de datos
poco usada que no es relacional y que ni siquiera maneja tipos de datos).
Lo que estoy haciendo es migrar la información de ese sistema a una base de
datos SQL Server 2000, y estoy cargando los planos que me dan a tablas SQL
Server cuyos campos son todos VARCHAR para luego depurar la información y
ponerla en tablas tipadas correctamente.


Eusebio


"Maxi" wrote:

Hola, creo que hay algo conceptual que estas mal interpretando. Vos no
queres convertir a un numeric sino a decimal.
Francamente esto esta mal asi, porque si el tipo de datos es decimal se
guarda en un char 50? eso no esta nada bien, el tipo de dato deberia
representar lo que realmente guardes y de no ser asi no habra control sobre
esa propiedad.

"Chevy" wrote in message
news:
> Hola Grupo,
>
> tengo un campo tipo varchar(50) el cual se supone que contiene cadenas que
> se deben convertir a un numeric(18,5).
>
> La funcion CONVERT sobre ese campo me dice que no puede convertir varchar
> a
> numeric.
> Le paso la función ISNUMERIC al campo y dice que todos los valores son
> numéricos.
> Reviso en detalle y veo que la función ISNUMERIC reconoce como valores
> numéricos las cadenas '.' , ',' , '-' y el '+', y que la función CONVERT
> no
> puede procesar.
>
> La pregunta es, cómo puedo determinar los registros de esa tabla que la
> función CONVERT no puede procesar, porque la funcion ISNUMERIC en realidad
> no
> me da el 100% de confianza en que el valor se puede convertir.
>
> Otro problema que tengo es que algunos valores de ese campo tienen
> caracteres ASCCI no imprimibles, al observarlos, pareciera que son cadenas
> que se pueden convertir pero si se revisa caracter por caracter en la
> cadena,
> se encuentra un caracter no numérico que impide el "casteo" a NUMERIC.
> Aquí,
> lo que necesitaría es una función para hallar esos caracteres y poder
> eliminarlos para que la cadena quede limpia y se pueda convertir a
> NUMERIC.
>
> Tabla X
> cadenaNUM CONVERTNumeric ISNUMERIC(cadenaNUM )
> 1054.33 1054.33 1
> . error 1
> + error 1
>
> mil gracias por sus sugerencias
>
> Eusebio

Respuesta Responder a este mensaje
#3 Maxi
19/04/2007 - 17:04 | Informe spam
Hola, de ser asi vas a tener que customizar la informacion, y quizas ver uno
a uno


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Chevy" escribió en el mensaje
news:
Gracias Maxi,

Olvidé comentar que la tabla con el tipo de datos varchar y cuyos datos
quiero pasar a un tip de datos NUMERIC es una tabla que se importó de un
archivo plano proveniente de un sistema llamado PICK (es una base de
datos
poco usada que no es relacional y que ni siquiera maneja tipos de datos).
Lo que estoy haciendo es migrar la información de ese sistema a una base
de
datos SQL Server 2000, y estoy cargando los planos que me dan a tablas SQL
Server cuyos campos son todos VARCHAR para luego depurar la información y
ponerla en tablas tipadas correctamente.


Eusebio


"Maxi" wrote:

Hola, creo que hay algo conceptual que estas mal interpretando. Vos no
queres convertir a un numeric sino a decimal.
Francamente esto esta mal asi, porque si el tipo de datos es decimal se
guarda en un char 50? eso no esta nada bien, el tipo de dato deberia
representar lo que realmente guardes y de no ser asi no habra control
sobre
esa propiedad.

"Chevy" wrote in message
news:
> Hola Grupo,
>
> tengo un campo tipo varchar(50) el cual se supone que contiene cadenas
> que
> se deben convertir a un numeric(18,5).
>
> La funcion CONVERT sobre ese campo me dice que no puede convertir
> varchar
> a
> numeric.
> Le paso la función ISNUMERIC al campo y dice que todos los valores son
> numéricos.
> Reviso en detalle y veo que la función ISNUMERIC reconoce como valores
> numéricos las cadenas '.' , ',' , '-' y el '+', y que la función
> CONVERT
> no
> puede procesar.
>
> La pregunta es, cómo puedo determinar los registros de esa tabla que la
> función CONVERT no puede procesar, porque la funcion ISNUMERIC en
> realidad
> no
> me da el 100% de confianza en que el valor se puede convertir.
>
> Otro problema que tengo es que algunos valores de ese campo tienen
> caracteres ASCCI no imprimibles, al observarlos, pareciera que son
> cadenas
> que se pueden convertir pero si se revisa caracter por caracter en la
> cadena,
> se encuentra un caracter no numérico que impide el "casteo" a NUMERIC.
> Aquí,
> lo que necesitaría es una función para hallar esos caracteres y poder
> eliminarlos para que la cadena quede limpia y se pueda convertir a
> NUMERIC.
>
> Tabla X
> cadenaNUM CONVERTNumeric ISNUMERIC(cadenaNUM )
> 1054.33 1054.33 1
> . error 1
> + error 1
>
> mil gracias por sus sugerencias
>
> Eusebio

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida