Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Como verificar si un valor es numerico o tiene letras en postgres

Estas en el tema de Como verificar si un valor es numerico o tiene letras en postgres en el foro de PostgreSQL en Foros del Web. Saludos a todos los expertos, estoy programando en php y postgres, pero me surgio un problema. En la parte donde estoy migrando algunas consultas hechas ...
  #1 (permalink)  
Antiguo 09/03/2007, 15:58
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años, 6 meses
Puntos: 0
Como verificar si un valor es numerico o tiene letras en postgres

Saludos a todos los expertos, estoy programando en php y postgres, pero me surgio un problema. En la parte donde estoy migrando algunas consultas hechas en foxpro a postgres, no encuentro la funcion para saber si un valor es numerico o tiene numeros y tambien letras.

La tabla regfactura contiene una serie de campos algunos numericos y otros de tipo caracter. EL campo numfactura es de tipo caracter y almacena catindades como:
10000000
12000000
FR11000000
FR13000000
FR23000000
FR33000000
...

El siguiente codigo es parte de las instrucciones que corren en vfoxpro
Código PHP:

select 
*
from regfactura
Order By Fecha desc
,iif(val(numfactura)=0,val(right(numfactura,8)),val(numfactura) )"; 
Al pasarlo a postgres esto quedaria mas o menos asi.......
Código PHP:
select *
from regfactura
Order By Fecha desc

    case 
when int8(numfactura) = 0 then int8(substr(numfacturalength(numfactura)-78))
    else 
numfactura
    end

Solo que marca un error cuando utilizo int8 para convertir a numfactura en entero

El error que arroja es el siguiente: me imagino que es porq tiene letras, decir es alfanumerico
Código PHP:
ERROR:  la sintaxis de entrada no es válida para integer«FR11000000» 
Estoy en este momento buscando la forma de verificar si el valor de numfactura es completamente numerico que mande true o "0", o si tiene letras con numeros que mande "1".....


Espero q me puedan ayudar... seguire buscando a ver si encuentro la forma correcta de resolverlo......

Gracias por todo y disculpen las molestias que causo
(jrm)
  #2 (permalink)  
Antiguo 09/03/2007, 17:10
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 2 meses
Puntos: 7
Re: Como verificar si un valor es numerico o tiene letras en postgres

Hola...

Si esto no responde tu duda, no se qué lo pueda hacer

Cita:
Iniciado por javierrm Ver Mensaje
EL campo numfactura es de tipo caracter
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 09/03/2007, 17:14
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Como verificar si un valor es numerico o tiene letras en postgres

Hola cacr, no entendi tu respuesta.........

Ya encontre la solucion a mi problema:
Se las paso por si tienen o se les presenta el mismo problema.....

Código PHP:
select *
from regfactura
Order By Fecha desc

        
int8(case when (textregexeq(trim(numfactura),'^[[:digit:]]+(\.[[:digit:]]+)?$')) = false then substr(numfacturalength(numfactura)-78)
                else 
numfactura
    end
); 

Saludos.--------
(jrm)
  #4 (permalink)  
Antiguo 06/11/2009, 07:24
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Re: Como verificar si un valor es numerico o tiene letras en postgres

Cita:
Iniciado por javierrm Ver Mensaje
Hola cacr, no entendi tu respuesta.........

Ya encontre la solucion a mi problema:
Se las paso por si tienen o se les presenta el mismo problema.....

Código PHP:
select *
from regfactura
Order By Fecha desc

        
int8(case when (textregexeq(trim(numfactura),'^[[:digit:]]+(\.[[:digit:]]+)?$')) = false then substr(numfacturalength(numfactura)-78)
                else 
numfactura
    end
); 

Saludos.--------
(jrm)
HOLAAAA javier rm

Tengo el mismo problema pero mi campo "numfactura" es tipo character varying(14) donde deseo convertir a bigint pero encuentro que algunos campos son menores de tamaño de caracteres y que tambien incluyen letras.

por ejemplo tengo facturas con numero: p620001105 y E042917 La primera si la puedo modificar pero la segunda me sale error.

Gracias si me puedes ayudar veo que posteaste hace rato y puedas ayudarme con este caso
  #5 (permalink)  
Antiguo 09/11/2009, 08:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Como verificar si un valor es numerico o tiene letras en postgres

Si hubieras abierto un nuevo post, seguramente ya tendrías respuesta.
Te recomiendo reeplantees tu pregunta y la postees en un nuevo tema.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:52.