INSERT (fonction scalaire)
La fonction INSERT renvoie une chaîne dans laquelle, à partir de start dans source-string, length des unités de code spécifiées ont été supprimées et insert-string a été inséré.
Le schéma est SYSIBM. La version SYSFUN de la fonction INSERT reste disponible.
La fonction INSERT est identique à la fonction OVERLAY, sauf que l'argument de longueur est obligatoire.
- chaîne-source
- Expression qui spécifie la chaîne source. L'expression doit renvoyer une valeur qui est une chaîne intégrée, un type de données numérique, booléenou date-heure. Si la valeur n'est pas un type de données chaîne, elle est implicitement transtypée en VARCHAR avant d'évaluer la fonction. démarrage
- Expression qui renvoie une valeur entière. La valeur entière indique le point de départ dans la chaîne source où la suppression des unités de code et l'insertion d'une autre chaîne doivent commencer. L'expression doit renvoyer une valeur qui est un type de données numérique intégré, CHAR, VARCHAR, GRAPHIC ou VARGRAPHIC. Si la valeur n'est pas de type INTEGER, elle est implicitement transtypée en INTEGER avant d'évaluer la fonction. La valeur entière est le point de départ des unités de code utilisant les unités de chaîne spécifiées. La valeur entière doit être comprise entre 1 et la longueur réelle de source-string en unités de chaîne implicites ou explicites plus un (SQLSTATE 22001). Si OCTETS est spécifié et que le résultat est des données graphiques, la valeur doit être un nombre impair compris entre 1 et la longueur d'octet réelle de source-string plus un (SQLSTATE 428GC ou 22011). longueur
- Expression qui spécifie le nombre d' unités de code (dans les unités de chaîne spécifiées) à supprimer de la chaîne source, à partir de la position identifiée par start. L'expression doit renvoyer une valeur qui est un type de données numérique intégré, CHAR, VARCHAR, GRAPHIC ou VARGRAPHIC. Si la valeur n'est pas de type INTEGER, elle est implicitement transtypée en INTEGER avant d'évaluer la fonction. La valeur doit être un entier positif ou zéro (SQLSTATE 22011). Si OCTETS est spécifié et que le résultat est des données graphiques, la valeur doit être un nombre pair ou zéro (SQLSTATE 428GC). chaîne-insertion
- Expression qui spécifie la chaîne à insérer dans source-string, à partir de la position identifiée par start. L'expression doit renvoyer une valeur qui est une chaîne intégrée, un type de données numérique, booléenou date-heure. Si la valeur n'est pas un type de données chaîne, elle est implicitement transtypée en VARCHAR avant d'évaluer la fonction.
- CODEUNITS16, CODEUNITS32ou OCTETS
- Indique l'unité de chaîne start et length.
CODEUNITS16 indique que start et length sont exprimés en unités de code UTF-16 16 bits. CODEUNITS32 indique que start et length sont exprimés en unités de code UTF-32 32 bits. OCTETS indique que start et length sont exprimés en octets.
Si l'unité de chaîne est CODEUNITS16 ou CODEUNITS32et que le résultat est une chaîne binaire ou des données binaires, une erreur est renvoyée (SQLSTATE 428GC). Si l'unité de chaîne est spécifiée comme CODEUNITS16 ou OCTETS et que les unités de chaîne de la chaîne source sont CODEUNITS32, une erreur est renvoyée (SQLSTATE 428GC). Si l'unité de chaîne est spécifiée en tant que OCTETS, l'opération est effectuée dans la page de codes de la chaîne source. Si une unité de chaîne n'est pas explicitement spécifiée, l'unité de chaîne de la chaîne source détermine l'unité utilisée. Pour plus d'informations sur CODEUNITS16, CODEUNITS32et OCTETS, voir
Unités de chaîne dans les fonctions intégrées
dansChaînes de caractères
.
Le type de données du résultat dépend des types de données source-string et insert-string, comme indiqué dans les tableaux suivants des combinaisons de types prises en charge. L'unité de chaîne du résultat est l'unité de chaîne de source-string. Si source-string ou insert-string est défini comme FOR BIT DATA, l'autre argument ne peut pas être défini avec des unités de chaîne de CODEUNITS32.La deuxième table s'applique uniquement aux bases de données Unicode.
| chaîne-source | chaîne-insertion | Résultat |
|---|---|---|
| Car ou Varcar | Car ou Varcar | VARCHAR |
| GRAPHIC ou VARGRAPHIC | GRAPHIC ou VARGRAPHIC | VARGRAPHIC |
| CLOB | CHAR, VARCHAR ou CLOB | CLOB |
| Car ou Varcar | CLOB | CLOB |
| DBCLOB | GRAPHIC, VARGRAPHIC ou DBCLOB | DBCLOB |
| GRAPHIC ou VARGRAPHIC | DBCLOB | DBCLOB |
| Car ou Varcar | CHAR FOR BIT DATA ou VARCHAR FOR BIT DATA | VARCHAR FOR BIT DATA |
| CHAR FOR BIT DATA ou VARCHAR FOR BIT DATA | CHAR, VARCHAR, CHAR FOR BIT DATA ou VARCHAR FOR BIT DATA | VARCHAR FOR BIT DATA |
| BINARY ou VARBINARY | BINARY ou VARBINARY | VARBINARY |
| BLOB | BINARY, VARBINARY ou BLOB | BLOB |
| BINARY ou VARBINARY | BLOB | BLOB |
| chaîne-source | chaîne-insertion | Résultat |
|---|---|---|
| Car ou Varcar | GRAPHIC ou VARGRAPHIC | VARCHAR |
| GRAPHIC ou VARGRAPHIC | Car ou Varcar | VARGRAPHIC |
| CLOB | GRAPHIC, VARGRAPHIC ou DBCLOB | CLOB |
| DBCLOB | CHAR, VARCHAR ou CLOB | DBCLOB |
Une chaîne source peut avoir une longueur de 0 ; dans ce cas, start doit être 1 (comme indiqué par les limites de start décrites précédemment) et le résultat de la fonction est une copie de insert-string.
Une chaîne d'insertion peut également avoir une longueur de 0. Cela a pour effet de supprimer les unités de code identifiées par start et length de la chaîne source.
| chaîne-source | chaîne-insertion | Résultat | |||
|---|---|---|---|---|---|
| Type de données | Unités de chaîne | Type de données | Unités de chaîne | attribut de longueur (length attribute) | Unités de chaîne |
| Chaîne de caractères avec l'attribut de longueur A | OCTETS | Chaîne graphique avec l'attribut de longueur B | CODEUNITS16 | A+3*B | OCTETS |
| Chaîne de caractères avec l'attribut de longueur A | OCTETS | Chaîne graphique avec l'attribut de longueur B | CODEUNITS32 | A+4*B | OCTETS |
| Chaîne de caractères avec l'attribut de longueur A | OCTETS | Caractère avec attribut de longueur B | CODEUNITS32 | A+4*B | OCTETS |
| Chaîne graphique avec l'attribut de longueur A | CODEUNITS16 | Caractère avec attribut de longueur B | OCTETS | A + B | CODEUNITS16 |
| Chaîne graphique avec l'attribut de longueur A | CODEUNITS16 | Caractère avec attribut de longueur B | CODEUNITS32 | A+2*B | CODEUNITS16 |
| Chaîne graphique avec l'attribut de longueur A | CODEUNITS16 | Chaîne graphique avec l'attribut de longueur B | CODEUNITS32 | A+2*B | CODEUNITS16 |
- A1 est la longueur réelle de source-string
- V2 est la valeur de start
- V3 est la valeur de length
- A4 est la longueur réelle de insert-string
Si un argument peut être null, le résultat peut être null ; si un argument est null, le résultat est la valeur null.
Exemples
- Exemple 1: Créez les chaînes
INSISTANT
,INSISERTING
etINSTING
à partir de la chaîneINSERTING
en insérant du texte au milieu du texte existant.SELECT INSERT('INSERTING',4,2,'IS'), INSERT('INSERTING',4,0,'IS'), INSERT('INSERTING',4,2,'') FROM SYSIBM.SYSDUMMY1 - Exemple 2: créez les chaînes
XXINSERTING
,XXNSERT EN COURS
,XXSERT
etXXEN COURS
à partir de la chaîneINSERTION
en insérant du texte avant le texte existant, en utilisant 1 comme point de départ.SELECT INSERT('INSERTING',1,0,'XX'), INSERT('INSERTING',1,1,'XX'), INSERT('INSERTING',1,2,'XX'), INSERT('INSERTING',1,3,'XX') FROM SYSIBM.SYSDUMMY1 - Exemple 3: Créez la chaîne
ABCABCXX
à partir de la chaîneABCABC
en insérant du texte après le texte existant. Etant donné que la chaîne source comporte 6 caractères, définissez la position de début sur 7 (un plus la longueur de la chaîne source).SELECT INSERT('ABCABC',7,0,'XX') FROM SYSIBM.SYSDUMMY1 - Exemple 4: Remplacez la chaîne
Hegelstraße
parHegelstrasse
.SELECT INSERT('Hegelstraße',10,1,'ss',CODEUNITS16) FROM SYSIBM.SYSDUMMY1 - Exemple 5: L'exemple suivant fonctionne avec la chaîne Unicode
& N ~ AB
, où&
est le symbole musical G clé caractère, et~
est le caractère tilde de combinaison. Cette chaîne est affichée sous différentes formes de codage Unicode dans l'exemple suivant:&
N
~
Le
octet
UTF-8 X'F09D849E' X'4E' X' CC83 X'41' X'42' UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042' Supposons que les variables UTF8_VAR et UTF16_VAR contiennent les représentations UTF-8 et UTF-16BE de la chaîne, respectivement. Utilisez la fonction INSERT pour insérer unC
dans la chaîne Unicode& N ~ AB
.
renvoie les valeursSELECT INSERT(UTF8_VAR, 1, 4, 'C', CODEUNITS16), INSERT(UTF8_VAR, 1, 4, 'C', CODEUNITS32), INSERT(UTF8_VAR, 1, 4, 'C', OCTETS) FROM SYSIBM.SYSDUMMY1CAB
,CB
etCN ~ AB
, respectivement.
renvoie les valeursSELECT INSERT(UTF8_VAR, 5, 1, 'C', CODEUNITS16), INSERT(UTF8_VAR, 5, 1, 'C', CODEUNITS32), INSERT(UTF8_VAR, 5, 1, 'C', OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ CB
,& N ~ AC
et& C ~ AB
, respectivement.
renvoie les valeursSELECT INSERT(UTF16_VAR, 1, 4, 'C', CODEUNITS16), INSERT(UTF16_VAR, 1, 4, 'C', CODEUNITS32), INSERT(UTF16_VAR, 1, 4, 'C', OCTETS) FROM SYSIBM.SYSDUMMY1CAB
,CB
etCN ~ AB
, respectivement.
renvoie les valeursSELECT INSERT(UTF16_VAR, 5, 2, 'C', CODEUNITS16), INSERT(UTF16_VAR, 5, 1, 'C', CODEUNITS32), INSERT(UTF16_VAR, 5, 4, 'C', OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ C
,& N ~ AC
et& CAB
, respectivement.
