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)
-   -   Sql access a Firebird 2 (cuarta consulta, Charset, Collate) (https://www.clubdelphi.com/foros/showthread.php?t=51815)

Caral 30-12-2007 16:59:06

Sql access a Firebird 2 (cuarta consulta, Charset, Collate)
 
Hola a todos.
Sigo con el cambio de base de datos.
Ahora tengo otra consulta:
A la hora de hacer consultas a cualquier tabla, me he topado con que Firebird no distingue entre Mayúsculas y Minúsculas.
Esto supongo que tendrá que ver con el Charset o el collate.
Pregunto:
Hay algún tipo de Charset o de Collate que pueda servir?
Lo que quiero hacer es que sin importar que el dato en la tabla este en Mayúsculas o Minúsculas me resuelva la consulta.
Osea que si el dato dice:
CARAL
o
Caral
o
caral
Siempre me envié el dato, sin importar como este escrito.
Por cierto, esto si lo hace Access.
Saludos

egostar 30-12-2007 17:35:16

Hola amigo Caral

Yo no se mucho de Charset o del Collate, pero para lo que quieres lo podrías hacer con la función UPPER.

Algo así:

Código SQL [-]
 
select * from TuTabla
where upper(Campo) = 'CARAL'

Salud OS

Lepe 30-12-2007 21:10:53

Cita:

Empezado por Caral (Mensaje 255163)
me he topado con que Firebird no distingue entre Mayúsculas y Minúsculas.

Seguro que quieres decir lo contrario. Firebird distingue entre mayúsculas y minúsculas, por eso solo encuentra el texto tal y como lo escribes.

Si quieres buscar trozos de texto, te recomiendo:
Código SQL [-]
select * from tabla
where Nombre containing 'ar'
encontrará "Caral", "CaRal", etc.

El tema de los character Set y collates no son menospreciables, deberías usar el ISO8859_1 y el collate ES_ES en:
- La creación de la base de datos (para a modo global indicar el character Set usado)
- La definición de cada campo de tu base de datos (si ya tienes definido el de la base de datos, solo añades el collate).
- Al tiempo de conectarte en los parámetros del TDatabase, en la propiedad Params:
Código:

      'user_name=XXXXX' :p
      'password=XXXXX' :p
      lc_ctype=ISO8859_1

En principio, creo recordar que Firebird está definido para trabajar con el collate estadounidense. De ahí que sea importante cambiarlo a los espaÑÑÑÑoles ;).

Saludos

Al González 31-12-2007 07:46:06

juego de caracteres
 
¡Hola a todos!

Sólo recordar que existe una traducción al español bastante aceptada y difundida para el término "character set", que es juego de caracteres.

En cuanto a "collate", en este momento no estoy seguro de si debemos usar "colación" (cotejo que se hace de una cosa con otra), "intercalado" (participio de intercalar) u "ordenamiento" (acción y efecto de ordenar).

Algunos autores utilizan el primero, pero tengo mis dudas al respecto, ya que podría tratarse de otro barbarismo cómoda e inválidamente adaptado al español, como ocurrió en el pasado con "accesar" (access-acceder), "librería" (library-biblioteca) y "embebido" (embedded-empotrado / incrustado).

Marcos, si pudieras apoyarnos un poco al respecto.

Un abrazo colado.

Al González. :)

RONPABLO 31-12-2007 08:00:28

Cita:

En principio, creo recordar que Firebird está definido para trabajar con el collate estadounidense. De ahí que sea importante cambiarlo a los espaÑÑÑÑoles
como tal yo uso el collate y el character set en none y nunca he tenido problemas con la "Ñ" o con las "´", siempre he tenido esa duda y no entiendo porque a los demás si les pone problema :rolleyes: (bueno en algún momento si tuve un problema pero fue con un campo llamado año ya que nunca pude hacer back up restore... solución... cambiar el nombre del campo a ano y listo)

Al González 31-12-2007 08:29:46

Cita:

Empezado por RONPABLO (Mensaje 255295)
...como tal yo uso el collate y el character set en none y nunca he tenido problemas con la "Ñ" o con las "´", siempre he tenido esa duda y no entiendo porque a los demás si les pone problema :rolleyes:...

Porque, como lo haces, seguramente coloca Murueta antes que Muñoz, cuando todos sabemos que debería ser al revés. Toma un directorio telefónico y dinos si está ordenado con "none". ;)

Cita:

Empezado por RONPABLO (Mensaje 255295)
...(bueno en algún momento si tuve un problema pero fue con un campo llamado año ya que nunca pude hacer back up restore... solución... cambiar el nombre del campo a ano y listo)

En ese caso yo opto por suprimir la letra, ya que ano tiene otro significado que podría usarse como tal en alguna aplicación. Así pues, me resulta más eficaz y menos confuso utilizar las adaptaciones ao y tamao para año y tamaño, respectivamente, en algunas aplicaciones restringidas a las 26 letras del inglés.

Uña-brazo.

Al González. :)

Lepe 31-12-2007 12:45:45

Cita:

Empezado por Al González (Mensaje 255293)
En cuanto a "collate", en este momento no estoy seguro de si debemos usar "colación" (cotejo que se hace de una cosa con otra)

A roman le he escuchado decir "cotejamiento", término que me parece acertado.

OFFTOPIC: Me gusta usar términos en español, pero si usas la palabra cotejamiento, debes explicar que se refiere al "collate", hecho por el cual, uso las palabras en inglés (muy mal hecho por mi parte ;)).

Saludos

Caral 31-12-2007 16:17:58

Hola
Gracias a todos por vuestras respuestas.
Me parece que tendré que cambiar los datos de la base de datos, osea estandarizarlos.
La costumbre de hacer las cosas, sin importar el como, en access, se paga cuando se quiere cambiar, buena experiencia para el que quiera usar access, yo recomendaría usar la sintaxis convencional de sql, como también el uso de una nomenclatura standard, así el cambio no seria tan engorroso.
El uso de palabras en Español seria muy bueno, pero para uno (que como sabéis empieza en esto) creo que es mejor indicar el nombre tal y como viene, asi se confunde menos.
De momento voy a usar esto:
ISO8859_1
ES_ES
Creo que sera la mejor opción, si tenéis otra, me lo hacéis saber, por favor.
Saludos

rastafarey 08-01-2008 20:15:55

resp
 
hay u set de caracteres latino que hace lo que tu quieres y soolo debes usar lo en el select

http://www.clubdelphi.com/foros/show...hlight=collate

Caral 08-01-2008 20:23:28

Hola
Muchas gracias rastafarey, lo revisare.
Saludos

rastafarey 08-01-2008 22:09:34

resp
 
este es el collate ES_ES_CI_AI


La franja horaria es GMT +2. Ahora son las 05:08:05.

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