Re: Maximo valor de un char

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Roberto Guevara <cygnus2k(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Maximo valor de un char
Date: 2008-04-14 16:49:50
Message-ID: 20080414164950.GN4541@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Roberto Guevara escribió:
> Hola a todos, les comento
> Estoy desarrollando (retomando un proyecto abandonado) una interfaz de idx a
> postgres hasta ahora salio todo bien salvo con los valores maximos de los
> strings.
> La api crea una constante MAX_CHAR que tiene el caracter ÿ o sea el
> caracter (int)255. Luego de acuerdo al tamaño del varchar concatena estos
> caracteres para establecer el valor maximo de un string para aplicarlo de
> esta forma:
>
> SELECT * FROM general.tipoe
> WHERE tipoe.ti_tipo <= 'ÿ'
> ORDER BY tipoe.ti_tipo

Esto no tiene mucho sentido. El valor en bytes de un char depende de la
codificacion -- por ejemplo en Latin1 no es lo mismo que en UTF8.
Ademas, el servidor hace recodificacion automaticamente, lo cual puede
cambiar los bytes que vayan al cliente con lo que se compara en el
servidor.

Si lo que quieres es almacenar un byte para indicar una categoria, te
sugiero usar el tipo "char", con las comillas incluidas, o sea

create table tipos (
ti_tipo "char" NOT NULL,
ti_dtip varchar(30)
);

Asi lo hacen los catalogos de sistema (por ejemplo pg_class.relkind).
Es un truco feo en todo caso, y probablemente lo mejor sea evitarlo.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Sebastián Villalba 2008-04-14 16:50:26 Re: [OFF-TOPIC]RECIBIR LISTA DE CORREO EN OUTLOK
Previous Message Roberto Guevara 2008-04-14 16:16:22 Maximo valor de un char