Re: Conver bool to text

From: Marco Manfredini <mldb(at)gmx(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Conver bool to text
Date: 2005-03-11 22:12:28
Message-ID: 200503112312.28266.mldb@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Edmund Bacon wrote:

> Is there a way to convert a boolean value to text and/or vice versa?
>
[cause it doesn't work as expected]
>
> It's not that difficult to write a fuction to convert boolean to text,
> but I'm wondering if there's already something that does this?

You can help yourself by misusing the $type_in and $type_out functions:

create or replace function bool2text(bool) returns text as $$
select textin(boolout($1));
$$ language sql;

create cast (bool as text) with function bool2text(bool);

This is somewhat generic. Since the name of the *in and *out function
can be read from pg_type, the conversion function can even be generated
automatic:
/*
warning: conversion via text representation isn't always right.
*/
create or replace function make_conversion_function(s text, d text)
returns void as
$$
declare
tin text;
tout text;
xp text;
begin
select typinput into tin from pg_catalog.pg_type where typname=d;
select typoutput into tout from pg_catalog.pg_type where typname=s;
xp:='create or replace function as_' || d || '(' || s || ') returns '
|| d || ' as $BODY$ select ' || tin || '(' || tout || '($1)) $BODY$
language sql;';
execute xp;
/* create cast analogue..*/
return;
end;
$$ language plpgsql;
select make_conversion_function('text','bool');
select make_conversion_function('bool','text');
select as_bool('true'),as_text(true);

---
Marco

Browse pgsql-sql by date

  From Date Subject
Next Message Tambet Matiisen 2005-03-12 11:40:30 Parameterized views proposition
Previous Message Edmund Bacon 2005-03-11 16:57:37 Conver bool to text