Re: modificar tipo de dato postgres
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
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 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