Tipos de datos
- Tipos Numéricos
- Tipos Monetarios
- Tipos de Caracteres
- Tipos de Batos Binarios
- Tipos de Fecha/Hora
- Tipos Booleanos
- Tipos Enumerados
- Tipos Geométricos?
- Tipos de Direcciones de Red?
- Tipos de Cadenas de Bits?
- Tipos de Búsqueda de Texto?
- Tipo UUID?
- Tipo XML?
- Arreglos?
- Tipos Compuestos?
- Tipos Identificadores de Objetos (OID)?
- Pseudo-Tipos?
Tipos de datos binarios
El tipo de dato bytea permite el almacenamiento de cadenas binarias; remítase a Table 8-6.
Tabla 8-6. Tipos de datos binarios
| Nombre | Tamaño de almacenamiento | Descripción |
| bytea | de 1 a 4 bytes adicionales para la actual cadena binaria | cadena binaria de tamaño variable |
Una cadena binaria es una secuencia de octetos (o bytes). Las cadenas binarias se distinguen de las cadenas de caracteres en dos formas: Primero, las cadenas binarias específicamente permiten almacenar octetos de valor cero y algunos "no imprimibles" (usualmente, los octetos fuera del rango de 32 a 126). Las cadenas de caracteres deshabilitan los octetos en cero, y también cualquier octeto y secuencia de valores de octetos que son no válidos de acuerdo con el conjunto de codificación elegido en la base de datos. Segundo, las operaciones en las cadenas binarias procesan los bytes actuales, donde el procesamiento de las cadenas de caracter dependen de la configuración de localización. En resumen, las cadenas binarias son apropiadas para almacenar datos que el programador considere "raw bytes", y para almacenar texto se utilizan las cadenas de caracteres.
Cuando se insertan datos bytea, los octetos de determinados valores deben ser escapados (pero todos los valores de octetos pueden ser escapados) cuando se utilizan como parte literal de una sentencia SQL. En general, para escapatr un octeto, conviértala en su valor octal de tres dígitos precediéndola de 2 barras invertidas ('\'). Aquí se muestran los caracteres que deben ser escapados y da las secuencias alternativas cuando deban ser aplicadas Table 8-7.
Table 8-7. bytea Octetos literales escapados
| Decimal Octet Value | Description | Escaped Input Representation | Example | Output Representation |
| 0 | zero octet | E'\\000' | SELECT E'\\000'::bytea; | \000 |
| 39 | single quote | '''' or E'\\047' | SELECT E'\''::bytea; | ' |
| 92 | backslash | E'\\\\' or E'\\134' | SELECT E'\\\\'::bytea; | \\ |
| 0 to 31 and 127 to 255 | "non-printable" octets | E'\\xxx' (octal value) | SELECT E'\\001'::bytea; | \001 |
El requerimiento para escapar las variaciones de octetos no imprimibles dependen de la configuración de localización. En algunas instanticas puede dejar las sin escapar. Note que el resultado en cada uno de los ejemplos en Table 8-7 es exactamente un octeto de tamaño, es más común que algunas veces sea más de un caracter.
La razón de el requerimiento de utilizar barras de escape , como se muestra en Table 8-7, es que la cadena entrante pasa por dos fases de parseo en un servidor Postgresql. La primer barra para cada par es interpretado como un escape para el parseador de cadenas literales (asumiendo que la sintaxis de escape de cadenas está siendo utilizado) y una vez pasado, deja el segundo escape en el par (Utilizar $$ -dollar quoted- como dobles cuotas evita este nivel de escape). El escape remanente es reconocido por la función de entrada del tipo bytea como el comienzo de tres dígitos octales o que está escapando otro caracter de escape. Por ejemplo, una cadena literal pasada al sevidor como E'\\001' se convierte en \001 después del primer parseo. Luego \001 entrá en la función de entrada de bytea y es convertido a como un octeto simple con valor 1. Note que las comillas no entran en el parseo debido a que utiliza las reglas de las cadenas literales normales. (Vea también Section 4.1.2.1.)
Los octetos de bytea algunas veces son escapados cuando se muestran. En general, cada octeto 'no imprimible' es convertido a su equivaletnte en tres dígitos octales y precedido por un caracter de escape. La mayoría de los caracteres imprimibles son representados por su representación estandar en el conjunto de caracteres del cliente. El octeto con valor decimal 92 (caracter de escape) es repetida en la salida. Detalles en Table 8-8.
Table 8-8. Octetos escapados en la salida de bytea
| Decimal Octet Value | Description | Escaped Output Representation | Example | Output Result |
| 92 | backslash | \\ | SELECT E'\\134'::bytea; | \\ |
| 0 to 31 and 127 to 255 | "non-printable" octets | \xxx (octal value) | SELECT E'\\001'::bytea; | \001 |
| 32 to 126 | "printable" octets | client character set representation | SELECT E'\\176'::bytea; | ~ |
Dependiendo el front-end de Postgresql que ud. utilice, deberá hacer algún que otro trabajo adicional en términos de escape y des-escape para las cadenas bytea. Por ejemplo. deberá también escapar los caracteres de fin de linea y retorno de carro si su interface automáticamente traduce estos.
El estándar SQL define un tipo binario distinto, llamado BLOB o BINARY LARGE OBJECT. El tipo de entrada es distinto a bytea, pero las funciones y operadores son mayormente los mismos.
Funciones y operadores para tipos binarios
Si desea obtener información de funciones para el tratamiento de este tipo de datos, puede revisar la documentación en Funciones.
