Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   firebird 2.1 ¿ char o varchar? (https://www.clubdelphi.com/foros/showthread.php?t=69406)

JXJ 16-08-2010 19:39:22

firebird 2.1 ¿ char o varchar?
 
hola

tengo que insertar cadenas de texto algo grandes.
pero no se cual es la mejor forma.

si con char o varchar.

¿y cuales son los limites de cantidad de caracteres que soportan.?


aqui dice que no mas de 255
http://www.volny.cz/iprenosil/interb...ib_strings.htm

VARCHARs (e.g. limit to 255 characters or inability to distinguish between empty and null string).

pero yo requeiro al menos 2000 o 5000 caracteres puede que hasta 10 000

por que el objetivo es almacenar sin usar campos blob.

Caral 16-08-2010 19:43:12

Hola
VarChar= 255 caracteres = 1 byte
VarChar + de 255 caracteres = 2 Bytes.
Same Think, diferent way to do it.
You may chose.
Saludos
PD: que buen ingles me manejo ultimamente jejeje.

Casimiro Noteví 16-08-2010 20:00:57

Si usas char es un tamaño fijo que ocupa memoria, lo uses toda o no.
Si usas varchar ocupa lo que necesitas, el resto no ocupa memoria.

El límite de varchar son 32765 caracteres.
Cita:

The size of a VARCHAR cannot exceed 32,765 bytes because Firebird adds a 2-byte size element to each VARCHAR item.

JXJ 16-08-2010 20:02:58

entonces no hay problema si pongo varchar(10000) ?
Código SQL [-]
CREATE TABLE Grande (
  unogrande  VARCHAR(500) CHARACTER SET NONE,
  descriptionenorme        VARCHAR(10000) CHARACTER SET NONE,

Caral 16-08-2010 20:03:57

Hola
Pero el varchar de 255 o menos no usa un byte?.
Por ahi me parecio leerlo.
Lo de la memoria no lo conocia.
Saludos

JXJ 16-08-2010 20:04:19

vientos gracias. :D

Casimiro Noteví 16-08-2010 20:18:39

Cita:

Empezado por Caral (Mensaje 373662)
Hola
Pero el varchar de 255 o menos no usa un byte?.
Por ahi me parecio leerlo.
Lo de la memoria no lo conocia.
Saludos

Sí, he leído casos que dicen una cosa y casos que dicen todo lo contrario :s
En este caso le viene mejor usar varchar.
Se debe usar char cuando hay un tamaño fijo, por ejemplo: el campo Telefono char(9) almacenará 9 caracteres aunque lo dejemos en blanco.
El tipo varchar se debe usar cuando se necesite almacenar cadenas de longitud muy variable, por ejemplo: el campo Incidencias varchar(1024) puede guardar cadenas desde 0 a 1024 caracteres. A veces se escribirá poco y otras mucho.

Cita:


Differences between CHAR and VARCHAR


Many people believe that VARCHAR is better because it stores only actual data, while CHAR is stored in full length. It is not true. In fact, both CHAR and VARCHAR are stored in memory buffer in their full, declared length; when the row is stored on disk, then RLE compression algorithm is used to compress whole row, i.e. CHARs, VARCHARs, INTEGERs, DATEs, etc. all together. So if you want to save space, CHARs are slightly better than VARCHARs (the differenece is that VARCHAR stores string length in two bytes). So decision whether use CHAR or VARCHAR should be based solely on application's requirements. E.g. store fixed length codes in CHAR, store names in VARCHAR (to allow correct concatenating).



guillotmarc 17-08-2010 12:53:53

Cita:

Empezado por JXJ (Mensaje 373661)
entonces no hay problema si pongo varchar(10000) ?
Código SQL [-]CREATE TABLE Grande ( unogrande VARCHAR(500) CHARACTER SET NONE, descriptionenorme VARCHAR(10000) CHARACTER SET NONE,

No, no hay ningún problema. Solo que un campo tan grande probablemente no lo podrás indexar. Pero eso normalmente no es ningún problema.

Además depende de la versión de la base de datos, a cada versión de Firebird van quitando limitaciones de este tipo y cada vez se pueden indexar campos más grandes. Así que si necesitas ese campo indexado, tendrás que probar que tamaño máximo te permite tu versión concreta de Firebird.

JXJ 22-08-2010 01:17:13

Estoy usando firebird 2.1
y definiendo los campos con ibmanager todo bien.

al exportar a un script sql todo bien
el problema es al importar.


Código:

Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Data type unknown.
Implementation limit exceeded.
COLUMN GRANDECADENA.

y este es el codgio sql de varchar(1000)

Código SQL [-]
GRANDECADENA  VARCHAR(10000) CHARACTER SET UTF8 COLLATE UTF8,
  GRANDECADENA VARCHAR(10000) CHARACTER SET UTF8 COLLATE UTF8

siguiendo en esto, en que tipo es mas apropiado
almacenar caracteres de texto. e imagenes

Pregunto por mysql se usa para almacenar las notas
de wordpress, joomla y otros. desarrollos web con php.


y eso es lo que quiero hacer en una semana
un pequelo CMS

en php y firebird. y no se que forma es mejor para
grandes cantidades de texto.
para exportar como sql y recrear las bases de datos
en otros servidores firebird 2.1

JXJ 22-08-2010 01:29:44

hice mis pruebas de a 1000 en 1000

y con 8000
es lo maximo en caracteres que soporta.

Código SQL [-]
GRANDECADENA  VARCHAR(8000) CHARACTER SET UTF8 COLLATE UTF8,
  GRANDECADENA VARCHAR(8000) CHARACTER SET UTF8 COLLATE UTF8

como lo dice aqui

http://www.firebirdsql.org/manual/mi...ata-types.html

Variable-length non-Unicode data with a maximum of 8,000 characters. Firebird can hold up to 32,765 characters. In 6.5, maximum was 255.

Casimiro Noteví 22-08-2010 01:50:53

En esa tabla que enlazas dice que firebird almacena en campos varchar hasta 32,765 characters. El que no pasa de 8000 es MS Sql server, que supongo que es a donde lo estás intentando de importar.

JXJ 25-08-2010 01:35:06

no..
no intento importar a mssql

estoy tratando de crear la base de datos , la estructura
y me da el error de que no soporta los 10 000 caracteres ni 9 000, solo con 8 000
caracteres firebird 2.1 me acepta el escript.

Casimiro Noteví 25-08-2010 02:14:28

Puede que sea así al usar utf.

rastafarey 01-09-2010 21:34:54

resp
 
blob tipo tipo texto

Casimiro Noteví 01-09-2010 22:04:40

Cita:

Empezado por rastafarey (Mensaje 375265)
blob tipo texto


Desde luego que es lo mejor para usar campos de texto grandes.


La franja horaria es GMT +2. Ahora son las 14:02:59.

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