Thread: converting from number to text

converting from number to text

From
Remigiusz Sokolowski
Date:
Hi!
I need convert number(float or integer) to text, but my version of
postgres (i.e. 6.3.2) seems to have not such a function?
Is it may be in newer versions or is there any work-around?
TIARems
p.s. concept is to have field, which contain date in timestamp form
(number of seconds from 'epoch'), but in which I could insert also value
'until cancellation' or any other text.

-------------------------------------------------------------------*------------
Remigiusz Sokolowski      e-mail: rems@gdansk.sprint.pl           * *        
-----------------------------------------------------------------*****----------



Re: [SQL] converting from number to text

From
Herouth Maoz
Date:
At 12:31 +0300 on 16/06/1999, Remigiusz Sokolowski wrote:


> I need convert number(float or integer) to text, but my version of
> postgres (i.e. 6.3.2) seems to have not such a function?
> Is it may be in newer versions or is there any work-around?
> TIA
>     Rems
> p.s. concept is to have field, which contain date in timestamp form
> (number of seconds from 'epoch'), but in which I could insert also value
> 'until cancellation' or any other text.

I think a better approach to your problem would be to add a status field.
The status field will contain anysuch additional information, and the date
field will only contain a date when the given status demands it. How you
display it in a report is a different matter - You can write a function
that queries the status field and substitutes it with the date value if the
status is so-and-so.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma




Re: [SQL] converting from number to text

From
tolik@icomm.ru (Anatoly K. Lasareff)
Date:
>>>>> "fRS" == Remigiusz Sokolowski <rems@gdansk.sprint.pl> writes:
fRS> Hi!fRS> I need convert number(float or integer) to text, but my version offRS> postgres (i.e. 6.3.2) seems to have
notsuch a function?fRS> Is it may be in newer versions or is there any work-around?fRS> TIAfRS> RemsfRS> p.s. concept
isto have field, which contain date in timestamp formfRS> (number of seconds from 'epoch'), but in which I could insert
alsovaluefRS> 'until cancellation' or any other text.
 

I send text of four function for int|float <-> text conversion.
==============================
Headers of the functions (you must replace DESTLIB to the real name of 
your .so file):

void * text2float(text *t);
/*sql create function text2float(text) returns float as 'DESTLIB' language 'c'*/

text* float2text(float8 *f, int prec);
/*sql create function float2text(float, int) returns text as 'DESTLIB' language 'c'*/

int4  text2int(text* t);
/*sql create function text2int(text) returns int as 'DESTLIB' language 'c'*/

text* int2text(int4 i);
/*sql create function int2text(int) returns text as 'DESTLIB' language 'c'*/===============================

Bodies of the functions:

void * text2float(text *t)
{ int l; char *c; float8 * ret;
 if(!t)   return NULL;
 l = VARSIZE(t) - VARHDRSZ + 1; c = palloc(l);
 memset(c, 0, l); memcpy(c, VARDATA(t), l); ret = palloc(sizeof(float8)); *ret = strtod(c, NULL); return ret;
}

text* float2text(float8 *f, int prec)
{ char s[40]; char fmt[10]; text* ret; int l;
 if(!f)   return NULL;
 sprintf(fmt, "%%.%dlf", prec); sprintf(s, fmt, *f);
 l = VARHDRSZ + strlen(s); ret = palloc(l); VARSIZE(ret) = l; memcpy(VARDATA(ret), s, strlen(s));
 return ret;
}

int4  text2int(text* t)
{ char* buf; int   l;
 if (!t)   return 0;
 l = VARSIZE(t) - VARHDRSZ; buf = palloc(l + 1); memset(buf, 0, l + 1); memcpy(buf, VARDATA(t), l);
 return atoi(buf);
}

text* int2text(int4 i)
{ text *ret; char s[20]; int l;
 sprintf(s, "%d", i); l = VARHDRSZ + strlen(s); ret = palloc(l); VARSIZE(ret) = l; memcpy(VARDATA(ret), s, l -
VARHDRSZ);
 return ret;
}


===============================

-- 
Anatoly K. Lasareff              Email:       tolik@icomm.ru 
Senior programmer


Re: [SQL] converting from number to text

From
Remigiusz Sokolowski
Date:
> > I need convert number(float or integer) to text, but my version of
> > postgres (i.e. 6.3.2) seems to have not such a function?
> > Is it may be in newer versions or is there any work-around?
> > TIA
> >     Rems
> > p.s. concept is to have field, which contain date in timestamp form
> > (number of seconds from 'epoch'), but in which I could insert also value
> > 'until cancellation' or any other text.
> 
> I think a better approach to your problem would be to add a status field.
> The status field will contain anysuch additional information, and the date
> field will only contain a date when the given status demands it. How you
> display it in a report is a different matter - You can write a function
> that queries the status field and substitutes it with the date value if the
> status is so-and-so.

This is very good ideaThanks :-)Rem

-------------------------------------------------------------------*------------
Remigiusz Sokolowski      e-mail: rems@gdansk.sprint.pl           * *        
-----------------------------------------------------------------*****----------