Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
campo vacío varchar consume byte?

Hola a Todos tengo una consulta a ver si me evacuan la duda con conocimiento en Firebird 2.5 en adelante:

Tengo mi tabla con campos ya establecido pero apareció un usuario que requiere utilizar hasta 1000 caracteres en un nuevo campo (una descripción super más ampliada) el punto es que buscando no he encontrado algo que me saque el 100% de la duda ya que unos dicen que aunque no mandes valor al campo los 1000 se convierte siempre en byte o sea 1000*1 byte +2 bytes=1002 bytes. y si en mi base de datos tengo 25,000 (veinte cinco mil registro) y ese campo me consume 1002 byte = 1 kilobyte seria por registro aumentando un ejemplo 25 megabyte lleve o no lleve caracteres. y hay otra la cual dice que no ocupa nada.

Favor alguien me puede ayudar para salir de dudas a partir de experiencia?

Saludos;

novato_erick
Responder Con Cita
  #2  
Antiguo 22-02-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Un campo VARCHAR/NVARCHAR (puesto a escoger mejor el segundo), almacena datos de longitud variable. La longitud que se almacena es la longitud del dato+1. El "+1" es porque ese byte guarda la longitud real utilizada.
Piensa que existe la posibilidad de definir VARCHAR(MAX), por lo tanto no tiene sentido que siempre se guarde ese MAX en la Nase de Datos.


Cita:
Empezado por novato_erick Ver Mensaje
...unos dicen que aunque no mandes valor al campo los 1000 se convierte siempre en byte o sea 1000*1 byte +2 bytes=1002 bytes.

Como te he dicho, cada registro no ocupará los 1000+1, sino el DATO_REAL_ALMACENADO+1.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 22-02-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un varchar vacío no ocupa nada, bueno, sí, lo que dice Neftali, lo mínimo para indicar que existe y su longitud.
En firebird no existe nvarchar, equivale a varchar(4000).
https://firebirdsql.org/manual/migra...ata-types.html


Responder Con Cita
  #4  
Antiguo 22-02-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En otras Base de Datos NVARCHAR se usa para Unicode y VARCHAR se mantiene por compatibilidad.
Por lo que veo en FB, VARCHAR ya soporta unicode utilizando el CharacterSet.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 22-02-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Thumbs up

Gracias por su pronta respuesta a dos eminencias.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Un varchar vacío no ocupa nada, bueno, sí, lo que dice Neftali, lo mínimo para indicar que existe y su longitud.
En firebird no existe nvarchar, equivale a varchar(4000).
https://firebirdsql.org/manual/migra...ata-types.html

Fuerte y Claro!

La duda fue evacuada.

Cita:
Empezado por Neftali Ver Mensaje
En otras Base de Datos NVARCHAR se usa para Unicode y VARCHAR se mantiene por compatibilidad.
Por lo que veo en FB, VARCHAR ya soporta unicode utilizando el CharacterSet.
La compatibilidad Unicode y CharacterSet lo leí en este link https://www.firebirdsql.org/file/com...ts-Heymann.pdf

Muchisimas Gracias Chicos nuevamente soy previlegiado por su intervención.

Saludos desde Panamá.

novato_erick

Doy por solucionado esta duda...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cual es el equivalente de C# byte[] buffer = new byte[256]; para delphi? yatzenco Varios 1 20-01-2016 17:56:34
Leer byte a byte un fichero binario NPIdea C++ Builder 2 22-03-2012 16:36:34
Problemas con campo varchar(max) leofuentes21 Varios 9 14-02-2012 19:25:41
Campo vacio en dbf lKinGl Varios 17 11-11-2008 15:21:28
Crear un Campo Byte sidneyb SQL 0 24-04-2008 21:43:04


La franja horaria es GMT +2. Ahora son las 11:55:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi