FirebirdSQL logo

En SQL, les chaînes de texte font partie des objets triables. Cela signifie qu’ils obéissent à leurs propres règles d’ordonnancement interne, par exemple l’ordre alphabétique. Des opérations de comparaison (par exemple, "moins que" ou "plus que") peuvent être appliquées à ces chaînes de texte, et les valeurs de l’expression doivent être évaluées selon une certaine séquence de tri. Par exemple, l’expression 'a'<'b' signifie que 'a' précède 'b' dans la séquence de tri. L’expression 'c'>'b' signifie que 'c' est défini après 'b' dans la séquence de tri. Les chaînes de texte contenant plus d’un caractère sont triées en comparant séquentiellement les caractères : on compare d’abord les premiers caractères de deux chaînes, puis les seconds, et ainsi de suite, jusqu’à ce qu’une différence soit trouvée entre les deux chaînes. Cette distinction contrôle l’ordre de tri.

Une comparaison (COLLATION) est généralement comprise comme un objet du schéma qui définit une séquence d’ordre (ou séquence de tri).

CREATE COLLATION

affectation

Ajoute un nouveau tri (comparaison) pour le jeu de caractères pris en charge dans la base de données.

Disponible en

DSQL

Syntaxe
CREATE COLLATION collname
FOR charset
[FROM basecoll | FROM EXTERNAL ('extname')]
[NO PAD | PAD SPACE]
[CASE [IN]SENSITIVE]
[ACCENT [IN]SENSITIVE]
['<specific-attributes>'];

<specific-attributes> ::= <attribute> [; <attribute> ...]

<attribute> ::= attrname=attrvalue
Table 1. Paramètres de l’opérateur CREATE COLLATION
Paramètre Description

collname

Trier (comparer) le nom. Longueur maximale de 63 caractères.

charset

Jeu de caractères.

basecoll

Triage de base (comparaison).

extname

Nom de tri du fichier de configuration, sensible à la casse.

L’instruction `CREATE COLLATION' ne `crée rien' ; son but est de faire connaître le tri à la base de données. Le tri doit déjà être présent dans le système, généralement dans un fichier de bibliothèque, et doit être enregistré dans le fichier fbintl.conf du sous-répertoire intl du répertoire racine de Firebird.

La clause optionnelle FROM spécifie le tri sur la base duquel le nouveau tri sera créé. Un tel tri doit déjà exister dans la base de données. Si le mot-clé EXTERNAL est spécifié, le tri sera recherché à partir de $fbroot/intl/fbintl.conf, avec extname correspondant exactement au nom dans le fichier de configuration (sensible à la casse).

Si la clause FROM est absente, Firebird recherche dans le fichier de configuration fbintl.conf du sous-répertoire intl du répertoire racine du serveur un nom de tri qui vient juste après CREATE COLLATION. En d’autres termes, ne pas spécifier FROM basecoll est équivalent à spécifier FROM EXTERNAL ('collname').

Lors de la création d’un tri, il est possible de spécifier si les espaces de fin sont pris en compte dans la comparaison. Si l’option NO PAD est spécifiée, les espaces de queue sont comptés dans la comparaison. Si l’option PAD SPACE est spécifiée, les espaces de queue ne sont pas comptés dans la comparaison.

La phrase optionnelle CASE vous permet de spécifier si la comparaison est sensible à la casse ou non.

La phrase facultative ACCENT permet de préciser si la comparaison est sensible à la casse (par exemple, e et é).

Attributs spécifiques

L’instruction CREATE COLLATION peut également spécifier des attributs spécifiques pour le tri. Le tableau ci-dessous énumère les attributs spécifiques disponibles. Tous les attributs ne sont pas applicables à toutes les sortes. Si un attribut ne s’applique pas à un tri, mais est spécifié lors de sa création, il ne provoquera pas d’erreur.

Important

Les noms d’attributs spécifiques sont sensibles à la casse.

1 bpc dans le tableau indique que l’attribut est valable pour les tris de jeux de caractères utilisant 1 octet par caractère (le jeu de caractères dit étroit) et UNI pour les tris unicode.

Table 1. Liste des attributs spécifiques disponiblesCOLLATION
Nom Valeur Validité Description

DISABLE-COMPRESSIONS

0, 1

1 bpc

Désactive la compression (sinon, les abréviations). Les compressions forcent certaines séquences de caractères à être triées comme des modules atomiques, par exemple, l’espagnol c + h comme le seul caractère ch.

DISABLE-EXPANSIONS

0, 1

1 bpc

Désactiver les extensions. Les extensions vous permettent de traiter certains caractères (par exemple, les ligatures ou les trémas de voyelles) comme des séquences de caractères et de les trier en conséquence.

ICU-VERSION

default ou M.m

UNI

Définit la version de la bibliothèque ICU à utiliser. Les valeurs valides sont définies dans les éléments appropriés <intl_module> du fichier intl/fbintl.conf. Format : soit la chaîne default, soit un numéro de version majeure et mineure comme 3.0 (tous deux sans guillemets).

LOCALE

xx_YY

UNI

Définit les paramètres de tri pour la norme linguistique. Nécessite la version complète de la bibliothèque ICU. Format de la chaîne : du_NL (sans guillemets).

MULTI-LEVEL

0, 1

1 bpc

L’utilisation de plusieurs niveaux de tri.

NUMERIC-SORT

0, 1

UNI

Traite les groupes continus de chiffres décimaux dans une chaîne de caractères comme des modules atomiques et les trie en séquence numérique (connu sous le nom de tri naturel).

SPECIALS-FIRST

0, 1

1 bpc

Trie les caractères spéciaux (espaces, etc.) en caractères alphanumériques.

Tip

Si vous voulez ajouter un nouveau jeu de caractères à la base de données avec son tri mental, enregistrez et exécutez la procédure stockée sp_register_character_name(name, max_bytes_per_character) à partir du sous-répertoire misc/intl.sql de l’installation Firebird. Pour fonctionner correctement avec le jeu de caractères, il doit être présent dans votre système d’exploitation, et enregistré dans le sous-répertoire fbintl.conf intl.

Qui peut créer un tri ?

L’instruction CREATE COLLATION peut être exécutée :

L’utilisateur qui a créé le tri devient son propriétaire.

Exemples

Example 1. Crée un tri en utilisant le nom trouvé dans fbintl.conf (sensible à la casse).
CREATE COLLATION ISO8859_1_UNICODE FOR ISO8859_1;
Example 2. Créer un tri en utilisant un nom spécial (défini par l’utilisateur) (le nom “external” doit correspondre exactement au nom dans le fichier fbintl.conf).
CREATE COLLATION LAT_UNI
FOR ISO8859_1
FROM EXTERNAL ('ISO8859_1_UNICODE');
Example 3. Créez un tri insensible à la casse en vous basant sur le tri déjà présent dans la base de données.
CREATE COLLATION ES_ES_NOPAD_CI
FOR ISO8859_1
FROM ES_ES
NO PAD
CASE INSENSITIVE;
Example 4. Créez un tri insensible à la casse en vous basant sur le tri déjà présent dans la base de données avec des attributs spécifiques.
CREATE COLLATION ES_ES_CI_COMPR
FOR ISO8859_1
FROM ES_ES
CASE INSENSITIVE
'DISABLE-COMPRESSIONS=0';
Example 5. Créez un tri non sensible à la casse sur la valeur des nombres (tri dit naturel).
CREATE COLLATION nums_coll FOR UTF8
FROM UNICODE
CASE INSENSITIVE 'NUMERIC-SORT=1';

CREATE DOMAIN dm_nums AS varchar(20)
CHARACTER SET UTF8 COLLATE nums_coll; -- original (manufacturer) numbers

CREATE TABLE wares(id int primary key, articul dm_nums ...);
Voir aussi :

DROP COLLATION.

DROP COLLATION

affectation

Suppression d’un tri existant.

Disponible en

DSQL

Syntaxe
DROP COLLATION collname
Table 1. Paramètres de l’opérateur DROP COLLATION
Paramètre Description

collname

Nom de tri.

L’instruction DROP COLLATION supprime le tri spécifié. Le tri doit être présent dans la base de données, sinon une erreur correspondante sera émise.

Tip

Si vous voulez supprimer un jeu de caractères avec tous ses tris dans la base de données, enregistrez et exécutez la procédure stockée sp_unregister_character_set(name) à partir du sous-répertoire misc/intl.sql de l’installation Firebird.

Qui peut supprimer le tri ?

L’instruction DROP COLLATION peut être exécutée :

  • Administrateurs

  • Le propriétaire du tri ;

  • Les utilisateurs ayant le privilège `DROP ANY COLLATION'.

Exemples

Example 1. Suppression du tri
DROP COLLATION ES_ES_NOPAD_CI;
Voir aussi :

CREATE COLLATION.