2018-04-17 11:32 GMT-05:00 Stephen Amell <stephenam...@inbox.lv>: > 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