Fonctions pour traiter les variables contextuelles
Fonctions pour travailler avec des chaînes de caractères
Fonctions pour travailler avec la date et l'heure
Fonctions permettant de travailler avec le type BLOB
Fonctions permettant de travailler avec le type DECFLOAT
Fonctions de conversion de type
Fonctions d'opérations binaires
Fonctions pour traiter les UUID
CAST()
DSQL, PSQL
CAST(value | NULL AS <type>) <type> ::= <datatype> | [TYPE OF] domain | TYPE OF COLUMN relname.colname <datatype> ::= <scalar_datatype> | <blob_datatype> | <array_datatype> <scalar_datatype> ::= Voir Syntaxe des types de données scalaires. <blob_datatype> ::= Voir Syntaxe du type de données BLOB. <array_datatype> ::= Voir syntaxe des tableaux.
Paramètre | Description |
---|---|
value |
Expression SQL. |
datatype |
Type de données SQL. |
domain |
Domaine. |
relname |
Le nom d’une table ou d’une vue. |
colname |
Le nom de la colonne de la table ou de la vue. |
<type>
.
La fonction CAST est utilisée pour convertir explicitement des données d’un type de données vers un autre type de données ou un autre domaine. Si cela n’est pas possible, une erreur sera émise.
Type d’origine | Type en sortie |
---|---|
Type numérique |
Types numériques, |
|
|
|
|
|
|
|
|
Notez que parfois des informations peuvent être perdues, par exemple lorsque vous convertissez le type TIMESTAMP
en DATE
.De plus, le fait que les types soient compatibles pour la fonction CAST
ne garantit pas que la conversion sera réussie.“CAST (123456789 AS SMALLINT)” provoquera certainement une erreur, tout comme “CAST('Judgement Day' as DATE)”.
Vous pouvez appliquer une conversion de type aux paramètres de l’opérateur :
CAST (? AS INTEGER)
Cela vous permet de contrôler le type de champs de saisie.
Lors de la conversion vers un domaine, toute restriction (NOT NULL et/ou CHECK) déclarée pour le domaine doit être satisfaite, sinon la conversion n’aura pas lieu. Rappelez-vous que la vérification CHECK passe si son calcul donne VRAI ou UNKNOWN (NULL). Pour les opérateurs suivants :
CREATE DOMAIN quint AS INT CHECK (VALUE >= 5000)
SELECT CAST (2000 AS quint) FROM rdb$database -- (1)
SELECT CAST (8000 AS quint) FROM rdb$database -- (2)
SELECT CAST (null AS quint) FROM rdb$database -- (3)
seul (1) se terminera par une erreur.
Si le modificateur TYPE OF
est utilisé, l’expression sera convertie au type de base du domaine, en ignorant les contraintes. Pour le domaine quint déclaré ci-dessus, les deux conversions seront équivalentes et les deux réussiront :
SELECT CAST (2000 AS TYPE OF quint) FROM rdb$database
SELECT CAST (2000 AS INT) FROM rdb$database
Lorsque TYPE OF
est utilisé avec le type [VAR]CHAR
, son jeu de caractères et son ordre de tri (collate) sont conservés.
CREATE DOMAIN iso20 VARCHAR(20) CHARACTER SET iso8859_1;
CREATE DOMAIN dunl20 VARCHAR(20) CHARACTER SET iso8859_1 COLLATE du_nl;
CREATE TABLE zinnen (zin VARCHAR(20));
COMMIT;
INSERT INTO zinnen VALUES ('Deze');
INSERT INTO zinnen VALUES ('Die');
INSERT INTO zinnen VALUES ('die');
INSERT INTO zinnen VALUES ('deze');
SELECT CAST(zin AS TYPE OF iso20) FROM zinnen ORDER BY 1;
-- returns Deze -> Die -> deze -> die
SELECT CAST(zin AS TYPE OF dunl20) FROM zinnen ORDER BY 1;
-- returns deze -> Deze -> die -> Die
Warning
|
Si la définition du domaine est modifiée, les conversions existantes du domaine ou de son type peuvent devenir erronées. Si de telles conversions se produisent dans les modules PSQL, leurs erreurs peuvent être détectées. Champ d’application RDB$VALID_BLR. |
Permet de convertir une expression en un type de colonne d’une table ou d’une vue existante. Seul le type lui-même sera utilisé, pour les types de chaînes de caractères, le même jeu de caractères sera utilisé, mais pas la séquence de tri. Les restrictions et les valeurs par défaut de la colonne originale ne sont pas appliquées.
CREATE TABLE ttt (
s VARCHAR(40) CHARACTER SET utf8 COLLATE unicode_ci_ai
);
COMMIT;
SELECT CAST ('Jag har många vänner' AS TYPE OF COLUMN ttt.s)
FROM rdb$database;
Warning
|
Si la définition d’une colonne est modifiée, les conversions existantes de son type peuvent devenir erronées. Si de telles conversions se produisent dans les modules PSQL, leurs erreurs peuvent être détectées. Champ RDB$VALID_BLR. |
SELECT CAST ('12' || '-June-' || '1959' AS DATE) FROM rdb$database
Notez que dans certains cas, vous n’aurez pas besoin d’utiliser la syntaxe de conversion comme dans l’exemple ci-dessus, car Firebird comprendra à partir du contexte (comparaison avec un champ DATE
) comment interpréter la chaîne :
UPDATE People SET AgeCat = 'Old'
WHERE BirthDate < '1-Jan-1943'
Mais cela n’est pas toujours possible. La conversion dans l’exemple ci-dessous ne peut pas être omise car le système essaiera de convertir la chaîne en un nombre afin de lui soustraire un nombre :
SELECT CAST('TODAY' AS DATE) - 7 FROM rdb$database
BIN_AND()
DSQL, PSQL
BIN_AND (number, number [, number ...])
Paramètre | Description |
---|---|
number |
Entier. |
SMALLINT
, INTEGER
, BIGINT
ou INT128
La fonction BIN_AND
renvoie le résultat de l’opération ET binaire des arguments.
[fblangref-scalarfuncs-bin-or], [fblangref-scalarfuncs-bin-xor].
BIN_NOT()
DSQL, PSQL
BIN_NOT (number)
Paramètre | Description |
---|---|
number |
Entier. |
SMALLINT
, INTEGER
, BIGINT
ou INT128
La fonction BIN_NOT
renvoie le résultat d’une opération NOT
au sens du bit sur l’argument.
[fblangref-scalarfuncs-bin-or], [fblangref-scalarfuncs-bin-and].
BIN_OR()
DSQL, PSQL
BIN_OR (number, number [, number ...])
Paramètre | Description |
---|---|
number |
Entier. |
SMALLINT
, INTEGER
, BIGINT
ou INT128
La fonction BIN_OR
renvoie le résultat de l’opération "bitwise OR" des arguments.
[fblangref-scalarfuncs-bin-and], [fblangref-scalarfuncs-bin-xor].
BIN_SHL()
DSQL, PSQL
BIN_SHL (number, shift)
Paramètre | Description |
---|---|
number |
Entier. |
shift |
Le nombre de bits par lequel la valeur number est décalée. |
BIGINT
ou INT128
.
La fonction BIN_SHL
renvoie le premier paramètre décalé bit à bit de la valeur du second paramètre, c’est-à-dire a << b
ou a-2b
.
BIN_SHR()
DSQL, PSQL
BIN_SHR (number, shift)
Paramètre | Description |
---|---|
number |
Entier. |
shift |
Le nombre de bits par lequel la valeur numérique est décalée. |
BIGINT
ou INT128
.
La fonction BIN_SHR
renvoie le premier paramètre décalé bit à bit de la valeur du second paramètre, c’est-à-dire a >> b
ou a/2b
.
L’opération effectuée est un décalage arithmétique vers la droite (SAR), ce qui signifie que le signe du premier opérande est toujours conservé.
BIN_XOR()
DSQL, PSQL
BIN_XOR (number, number [, number ...])
Paramètre | Description |
---|---|
number |
Entier. |
SMALLINT
, INTEGER
, BIGINT
ou INT128
La fonction BIN_XOR
renvoie le résultat de l’opération XOR
bit à bit des arguments.
[fblangref-scalarfuncs-bin-and], [fblangref-scalarfuncs-bin-or].