Re: modificar tipo de dato postgres

2018-04-17 Thread Jaime Casanova
2018-04-17 11:32 GMT-05:00 Stephen Amell :
> Solo quiero decir que con este comentario, Jaime, me tiraste media
> biblioteca de SQL al tacho.
>
> Como que char, varchar y text son lo mismo!!!??? Me puse a leer y si, es así
> nomas [1]... entonces, ¿se puede usar indices char ops sobre text? ¿a que
> costo? Me imagino que indices por text serán muy pesados tanto como el campo
> en si.
>

ja ja..

empecemos porque no dije nada de char. varchar y text son
intercambiables pero char si actúa diferente (por qué el estándar SQL
manda que actue diferente).

así que no reemplaces tus char por varchar ni text. la diferencia es
que varchar y text almacenan exactamente lo que le pediste que
almacene y muestra exactamente lo que almacenaste mientras que char
ignora los espacios en blanco al final pero siempre completa con
blancos la longitud de la cadena!!!

con char completa la cadena con blancos al final aunque nunca muestra
los espacios al final (aunque tu se lo hayas pasado!)

postgres=# select char_length('jaime'::char(15));
 char_length
-
   5
(1 fila)

postgres=# select char_length('jaime '::char(15));
 char_length
-
   5
(1 fila)

postgres=# select octet_length('jaime '::char(15));
 octet_length
--
   15
(1 fila)

mientras que con varchar o text

postgres=# select char_length('jaime'::varchar(15));
 char_length
-
   5
(1 fila)

postgres=# select char_length('jaime '::varchar(15));
 char_length
-
   6
(1 fila)

postgres=# select octet_length('jaime '::varchar(15));
 octet_length
--
6
(1 fila)


-- 
Jaime Casanova  www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: modificar tipo de dato postgres

2018-04-17 Thread Stephen Amell
Solo quiero decir que con este comentario, Jaime, me tiraste media 
biblioteca de SQL al tacho.


Como que char, varchar y text son lo mismo!!!??? Me puse a leer y si, es 
así nomas [1]... entonces, ¿se puede usar indices char ops sobre text? 
¿a que costo? Me imagino que indices por text serán muy pesados tanto 
como el campo en si.


[1] https://www.postgresql.org/docs/current/static/datatype-character.html

Gracias por el aporte!


On 2018-04-16 01:57, Jaime Casanova wrote:

2018-04-15 12:14 GMT-05:00 jvenegasperu :

Hola buen dia estoy modificando las longitudes de algunos campos

al ejecutar

ALTER TABLE deta_tipos ALTER COLUMN deta_tip_nombre TYPE character
varying(350)

obtengo este error

ERROR:  no se puede alterar el tipo de una columna usada en una regla o
vista
   DETAIL:  regla «_RETURN» en vista v_rrhh_ausencias depende de la columna
«deta_tip_nombre»

el campo deta_tip_nombre es character varying (50)

no estoy cambiando el tipo de dato estoy modificando su longitud bueno ahora
tengo que borrar modificar y volver a crear la vista hay alguna manera mas
rapida de hacer esto?



esta vez, no. para la próxima, no uses varchar sino text (no obtienes
ninguna ventaja usando varchar en lugar de text) y si necesitas
limitar el tamaño del texto le pones un constraint check
(char_length(campo) = longitud_permitida)





Re: modificar tipo de dato postgres

2018-04-15 Thread Jaime Casanova
2018-04-15 12:14 GMT-05:00 jvenegasperu :
> Hola buen dia estoy modificando las longitudes de algunos campos
>
> al ejecutar
>
> ALTER TABLE deta_tipos ALTER COLUMN deta_tip_nombre TYPE character
> varying(350)
>
> obtengo este error
>
> ERROR:  no se puede alterar el tipo de una columna usada en una regla o
> vista
>   DETAIL:  regla «_RETURN» en vista v_rrhh_ausencias depende de la columna
> «deta_tip_nombre»
>
> el campo deta_tip_nombre es character varying (50)
>
> no estoy cambiando el tipo de dato estoy modificando su longitud bueno ahora
> tengo que borrar modificar y volver a crear la vista hay alguna manera mas
> rapida de hacer esto?
>
>

esta vez, no. para la próxima, no uses varchar sino text (no obtienes
ninguna ventaja usando varchar en lugar de text) y si necesitas
limitar el tamaño del texto le pones un constraint check
(char_length(campo) = longitud_permitida)

-- 
Jaime Casanova  www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services