VARCHAR_FORMAT
La fonction VARCHAR_FORMAT renvoie une représentation de chaîne de caractères du premier argument dans le format indiqué par la chaîne de formatfacultative.
Si un argument de la fonction VARCHAR_FORMAT peut être null, le résultat peut être null ; si un argument est null, le résultat est la valeur null.
Caractère à Varchar
- expression-chaîne
- Expression qui renvoie une valeur correspondant à un type de données chaîne de caractères ou chaîne graphique intégré.
Horodatage vers Varchar
- expression_horodatage
- Expression qui renvoie une valeur de l'un des types de données intégrés suivants: une date, un horodatage, une chaîne de caractères ou une chaîne graphique. Si l'argument est DATE, il est d'abord converti en valeur TIMESTAMP (0), en supposant que l'heure est exactement minuit (00.00.00).
Si timestamp-expression est une chaîne de caractères ou graphique, la valeur de timestamp-expression doit être une représentation de chaîne valide d'une date ou d'un horodatage . Elle est d'abord convertie en valeur TIMESTAMP (12). Pour connaître les formats valides des représentations de chaîne des horodatages, voir Représentations de chaîne des valeurs de date et d'heure.
Si l'argument est une chaîne, l'argument format-string doit également être spécifié.
- chaîne-format
- Expression qui renvoie un type de données de chaîne de caractères intégré ou un type de données de chaîne graphique. Si la valeur n'est pas un type de données CHAR ou VARCHAR, elle est implicitement transtypée en VARCHAR avant d'évaluer la fonction. format-string contient un modèle de la manière dont expression_horodatage doit être formaté. La valeur résultante peut contenir des caractères dans tous les cas. Un format valide est une combinaison des formats répertoriés ci-dessous, séparés éventuellement par des séparateurs valides. Les séparateurs admis sont les suivants:
- Signe moins (-)
- Point (.)
- barre oblique (/)
- Virgule (,)
- apostrophe (')
- Point-virgule (;)
- Deux-points (:)
- blanc ()
| Format | Unité |
|---|---|
| AM ou PM 1, 2 | Indicateur méridien (matin ou soir) sans période. L'indicateur méridien renvoyé est basé sur la langue utilisée pour les messages dans le travail. Cet indicateur méridien est extrait du message CPX9035 du fichier message QCPFMSG de la bibliothèque *LIBL. |
| A.Mou P.M. 1, 2 | Indicateur méridien (matin ou soir) avec périodes. Cet élément de format utilise les chaînes exactes'A.M.' ou'P.M.' et est indépendant de la langue utilisée pour les messages dans le travail. |
| contrôle des changements | Siècle (00-99). Si les deux derniers chiffres de l'année à quatre chiffres sont zéro, le résultat est les deux premiers chiffres de l'année. Sinon, le résultat est les deux premiers chiffres de l'année plus un. |
| DAY, Day ou day 1, 2 | Nom du jour au format majuscule, titlecase ou minuscule. Le nom du jour renvoyé est basé sur la langue utilisée pour les messages du travail. Ce nom de jour est extrait du message CPX9034 du fichier message QCPFMSG de la bibliothèque *LIBL. |
| DY, Dy ou dy 1, 3 | Nom abrégé du jour en majuscules, en minuscules ou en titlecase. Le nom abrégé du jour est extrait du message CPX9039 du fichier message QCPFMSG de la bibliothèque *LIBL. |
| D 1 | Jour de la semaine (1-7), où 1 correspond au dimanche. |
| JJ | Jour du mois (01-31). |
| JJJ | Jour de l'année (001-366). |
| FF ou FFn | Fractions de secondes (0-999999999999). Le nombre n est utilisé pour spécifier le nombre de chiffres à inclure dans la valeur renvoyée. Les valeurs valides pour n sont comprises entre 1 et 12. La valeur par défaut est 6. |
| HH | HH se comporte de la même manière que HH12. |
| HH12 | Heure du jour (01-12) au format 12 heures. |
| HH24 | Heure du jour (00-24) au format 24 heures. |
| division d"identification | Jour de la semaine ISO (1-7), où 1 correspond au lundi et 7 au dimanche |
| IW | Semaine de l'année ISO (01-53). La semaine commence le lundi et comprend 7 jours. La semaine 1 est la première semaine de l'année à contenir un jeudi, ce qui équivaut à la première semaine de l'année à contenir le 4 janvier |
| I | Année ISO (0-9). Dernier chiffre de l'année en fonction de la semaine ISO renvoyée. |
| IY | Année ISO (00-99). Les deux derniers chiffres de l'année en fonction de la semaine ISO renvoyée. |
| IAA | Année ISO (000-999). Les trois derniers chiffres de l'année en fonction de la semaine ISO renvoyée. |
| AAAA | Année ISO (0000-9999). Année basée sur la semaine ISO renvoyée. |
| J | Date du calendrier julien (0000000-9999999). |
| interface machine | Minute (00-59). |
| MM | Mois (01-12). |
| MOIS, Mois ou mois 1, 3 | Nom du mois au format majuscule, titlecase ou minuscule. Le nom du mois renvoyé est basé sur la langue utilisée pour les messages du travail. Ce nom du mois est extrait du message CPX3BC0 dans le fichier message QCPFMSG de la bibliothèque *LIBL. |
| MON, Mon ou mon 1, 3 | Nom abrégé du mois au format majuscule, titlecase ou minuscule. Le nom du mois renvoyé est basé sur la langue utilisée pour les messages du travail. Ce nom de mois est extrait du message CPX8601 du fichier message QCPFMSG de la bibliothèque *LIBL. |
| services de gestion | Millisecondes (000-999). Identique à FF3. |
| NNNNNN | Microsecondes (000000-999999). Identique à FF6. |
| Q | Trimestre (1-4). |
| lecture reproductible | RR se comporte de la même manière que YY. |
| RRRR | RRRR se comporte de la même manière que AAAA. |
| SS | Secondes (00-59). |
| SSSSS | Secondes depuis minuit précédent (00000-86400). |
| FR | Microsecondes (000000-999999). Identique à FF6. |
| W | Semaine du mois (1-5). La semaine 1 commence le premier jour du mois et se termine le septième jour. |
| WW | Semaine de l'année (01-53), où la semaine 1 commence le 1er janvier et se termine le 7 janvier. |
| Y | Dernier chiffre de l'année (0-9). |
| AA | Les deux derniers chiffres de l'année (00-99). |
| aaa | Les trois derniers chiffres de l'année (000-999). |
| AAAA | Année (0000-9999). |
- Cet élément de format est sensible à la casse. Dans les cas où les éléments de format sont ambigus, les éléments de format insensibles à la casse seront considérés en premier.
- Les ensembles AM et PM d'indicateurs méridiens peuvent être utilisés de manière interchangeable dans la chaîne de format, tout comme A.Met P.M. La chaîne de résultat contiendra l'indicateur méridien approprié pour la valeur de temps réelle.
- Seules ces orthographes exactes et ces combinaisons de cas peuvent être utilisées. Si cet élément de format est spécifié dans une combinaison de cas non valide, une erreur est renvoyée.
Exemples de chaînes de format valides:
'HH24-MI-SS'
'HH24-MI-SS-NNNNNN'
'YYYY-MM-DD'
'YYYY-MM-DD-HH24-MI-SS'
'YYYY-MM-DD-HH24-MI-SS-NNNNNN'
'FF3.J/Q-YYYY'Le résultat est une représentation de expression-horodatage dans le format spécifié par chaîne-format. format-string est interprété comme une série d'éléments de format pouvant être séparés par un ou plusieurs caractères de séparation. Une chaîne de caractères dans format-string est interprétée comme l'élément de format le plus long qui correspond à un élément du tableau précédent. Si deux éléments de format sont composés du même caractère et qu'ils ne sont pas séparés par un caractère de séparation, la spécification est interprétée, en commençant par la gauche, comme l'élément le plus long qui correspond à un élément de la table précédente, et se poursuit jusqu'à ce que des correspondances soient trouvées pour le reste de la chaîne de format. Par exemple, JJAAAA serait interprété comme JJ suivi de AAAA, plutôt que D suivi de JY, suivi de AAY.
Si format-string n'est pas spécifié, timestamp-expression est renvoyée en tant que représentation de chaîne de caractères de longueur variable de l'horodatage.
Le type de données du résultat est un caractère de longueur variable ou un graphique de longueur variable en fonction du type de données de la chaîne de format. L'attribut de longueur du résultat est la valeur maximale de 255 et l'attribut de longueur de format-string. format-string détermine également la longueur réelle du résultat. La longueur réelle ne doit pas être supérieure à l'attribut de longueur du résultat.
Le CCSID du résultat est identique au CCSID de la chaîne de format. Si format-string n'est pas spécifié, le CCSID du résultat est le CCSID SBCS par défaut sur le serveur en cours.
Numérique vers Varchar
- expression-numérique
- Expression qui renvoie une valeur de tout type de données numériques intégré. Si l'argument n'est pas une valeur à virgule flottante décimale, il est converti en DECFLOAT (34) pour le traitement.
- chaîne-format
- Expression qui renvoie une chaîne de caractères intégrée, une chaîne graphique ou un type de données numérique. Si la valeur n'est pas un type de données CHAR ou VARCHAR, elle est implicitement transtypée en VARCHAR avant d'évaluer la fonction. format-string contient un modèle de la façon dont expression-numérique doit être formaté. Une chaîne de format doit contenir une combinaison valide des éléments de format répertoriés conformément aux règles suivantes:
- Un élément de format de signe ('S','MI','PR') ne peut être spécifié qu'une seule fois.
- Un élément de format de séparateur décimal ne peut être spécifié qu'une seule fois.
- Les éléments de format alphabétique doivent être indiqués en majuscules.
- Un élément de format de préfixe ne peut être spécifié qu'au début de la chaîne de format, avant les éléments de format qui ne sont pas des éléments de format de préfixe. Lorsque plusieurs éléments de format de préfixe sont spécifiés, ils peuvent être spécifiés dans n'importe quel ordre.
- Un élément de format de suffixe ne peut être spécifié qu'à la fin de la chaîne de format, après tous les éléments de format qui ne sont pas des éléments de format de suffixe. Lorsque plusieurs éléments de format de suffixe sont spécifiés, ils peuvent être spécifiés dans n'importe quel ordre.
- Une virgule ou un élément de format G ne doit pas être le premier élément de format qui n'est pas un élément de format de préfixe. Il peut y avoir n'importe quel nombre d'éléments au format virgule ou G.
- Les blancs ne doivent pas être indiqués entre les éléments de format. Des blancs de début et de fin peuvent être indiqués, mais ils sont ignorés lors du formatage du résultat.
| Elément de format | Description |
|---|---|
| 0 | Chaque 0 représente un chiffre significatif. Les zéros non significatifs dans un nombre sont affichés sous la forme de zéros. |
| 9 | Chaque chiffre 9 représente un chiffre significatif. Les zéros non significatifs d'un nombre sont affichés sous forme de blancs. Seuls les séparateurs de groupe comportant au moins un chiffre à gauche du séparateur sont générés. |
| S | Préfixe: si expression-numérique est un nombre négatif, un signe moins (-) de début est inclus dans le résultat. Si expression numérique est un nombre positif, un signe plus (+) de début est inclus dans le résultat. |
| $ | Préfixe: un signe dollar de début ($) est inclus dans le résultat. |
| interface machine | Suffixe: Si expression-numérique est un nombre négatif, un signe moins de fin (-) est inclus dans le résultat. Si numeric-expression est un nombre positif, un blanc de fin est inclus dans le résultat. |
| demande d"achat | Suffixe: Si expression-numérique est un nombre négatif, un caractère inférieur à (<) et un caractère de fin supérieur à (>) sont inclus dans le résultat. Si expression numérique est un nombre positif, un espace de début et un espace de fin sont inclus dans le résultat. |
| , | Indique qu'une virgule doit être incluse à cet emplacement dans le résultat. Cette virgule est utilisée comme séparateur de groupe. |
| . | Indique qu'une période doit être incluse à cet emplacement dans le résultat. Ce point est utilisé comme séparateur décimal. |
| L | Préfixe ou suffixe: indique que le symbole de la devise locale doit être inclus à cet emplacement dans le résultat. Le symbole monétaire est extrait du message CPX8416 dans le fichier de messages QCPFMSG de la bibliothèque *LIBL. |
| D | Indique que le séparateur décimal local doit être inclus à cet emplacement dans le résultat. Le caractère décimal est extrait du message CPX8416 du fichier message QCPFMSG de la bibliothèque *LIBL. |
| G | Indique que le caractère de séparation du groupe local doit être inclus à cet emplacement dans le résultat. Si le caractère décimal local extrait du message CPX8416 dans le fichier message QCPFMSG de la bibliothèque *LIBL est un point, le séparateur de groupe est une virgule. Si le caractère décimal local est une virgule, le séparateur de groupe sera un point. |
Si format-string n'est pas spécifié, la fonction est équivalente à VARCHAR (DECFLOAT (expression-numérique)).
- Le résultat n'inclut pas de caractères numériques à gauche du séparateur décimal si toutes les conditions suivantes sont remplies:
- --1 < valeur d'entrée arrondie < 1
- format-string n'inclut pas d'élément de format'0'à gauche du séparateur décimal
- format-string inclut au moins un élément de format de chiffre ('0'ou'9') à droite du séparateur décimal
- Le résultat inclut un seul caractère 0 immédiatement avant le séparateur décimal implicite ou explicite si toutes les conditions suivantes sont remplies:
- La valeur de l'entrée arrondie est 0 ou -0
- format-string inclut uniquement les éléments de format de'9'chiffres à gauche du séparateur décimal implicite ou explicite
- format-string n'inclut aucun élément de format de chiffre à droite du séparateur décimal
- Si format-string inclut à la fois les éléments de format'0'et'9'à gauche du séparateur décimal, la position du premier élément de format de chiffre à gauche de la chaîne de format détermine la présence de blancs ou de zéros à gauche. Tous les éléments de format'9'spécifiés après l'élément de format'0'le plus à gauche à gauche du séparateur décimal implicite ou explicite sont traités comme si un élément de format'0'avait été spécifié. Par exemple, la valeur format-string '99099'est identique à la valeur'99000'.
- Si le nombre de chiffres à droite du séparateur décimal dans valeur-entrée-arrondie est inférieur au nombre d'éléments de format numérique à droite du séparateur décimal dans chaîne-format, le résultat inclut le nombre de caractères numériques à droite du séparateur décimal qui correspond au nombre d'éléments de format numérique à droite du séparateur décimal dans format-string, complété à droite par des zéros.
- Si le nombre de chiffres à gauche du séparateur décimal dans valeur-entrée-arrondie est supérieur au nombre d'éléments de format numérique à gauche du séparateur décimal dans chaîne-format, le résultat est une chaîne de caractères dièse (#) qui correspond à la longueur que format-string produit dans le résultat pour les valeurs valides.
- Si la valeur de l'entrée arrondie représente l'une des valeurs spéciales positives ou négatives, Infinity, sNaN, ou NaN, la chaîne "INFINITY", "SNAN", "NAN", "-INFINITY", "-SNAN" ou "-NAN" est renvoyée sans utiliser le format spécifié par format-string. La valeur spéciale décimale en virgule flottante sNaN n'entraîne pas d'exception lorsqu'elle est convertie en chaîne de caractères.
- Si format-string n'inclut aucun des éléments de format de signe'S', '' MI'ou'PR'et que la valeur de valeur-entrée-arrondie est négative, un signe moins (−) est inclus dans le résultat. Sinon, un blanc est inclus dans la chaîne résultante. Le signe moins ou un blanc précède immédiatement le premier chiffre du résultat à gauche du séparateur décimal, ou le séparateur décimal s'il n'y a pas de chiffres à gauche du séparateur décimal.
Le résultat est une représentation sous forme de chaîne de valeur-entrée-arrondie. Le type de données du résultat est un caractère de longueur variable ou un graphique de longueur variable en fonction du type de données de la chaîne de format. Si un seul argument est spécifié, l'attribut de longueur est 42. Sinon, l'attribut de longueur est 254. La longueur réelle du résultat est déterminée par format-string, le cas échéant. Sinon, la longueur réelle du résultat correspond au plus petit nombre de caractères pouvant représenter la valeur de valeur-entrée-arrondie. Si la chaîne résultante dépasse l'attribut de longueur du résultat, le résultat est tronqué.
Le CCSID du résultat est identique au CCSID de la chaîne de format. Si format-string n'est pas spécifié, le CCSID du résultat est le CCSID SBCS par défaut sur le serveur en cours.
Remarque
alternatives de syntaxe: TO_CHAR est synonyme de VARCHAR_FORMAT.
Exemples
Exemple: Horodatage à VARCHAR
- Définissez la variable de caractère TVAR sur une représentation sous forme de chaîne de la valeur d'horodatage de RECEIVED provenant de CORPDATA.IN_TRAY, au format AAAA-MM-JJ HH24:MI:SS.
Renvoie la chaîne:SELECT VARCHAR_FORMAT(RECEIVED,'YYYY-MM-DD HH24:MI:SS') INTO :TVAR FROM CORPDATA.IN_TRAY WHERE SOURCE = 'CHAAS'
En supposant que la valeur de la colonne RECEIVED est antérieure d'une seconde au début de l'année 2000 (31 décembre 1999 à 23:59:59pm), la chaîne suivante est renvoyée:1988-12-22 14:07:21
Le résultat serait différent si HH12 avait été spécifié à la place de HH24 dans la chaîne de format:1999-12-31 23:59:591999-12-31 11:59:59
Exemple: Horodatage à VARCHAR
- Supposons que la variable TMSTAMP est définie comme TIMESTAMP et possède la valeur suivante: 2007-03-09-14.07.38.123456. Les exemples suivants montrent plusieurs appels de la fonction et les valeurs de chaîne résultantes. Le type de données de résultat dans chaque cas est VARCHAR (255).
Function invocation Result ------------------- ------ VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMISSFF3') 20070309020738123 VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHH24MISS') 20070309140738 VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMI') 200703090207 VARCHAR_FORMAT(TMSTAMP,'DD/MM/YY') 09/03/07 VARCHAR_FORMAT(TMSTAMP,'MM-DD-YYYY') 03-09-2007 VARCHAR_FORMAT(TMSTAMP,'J') 2454169 VARCHAR_FORMAT(TMSTAMP,'Q') 1 VARCHAR_FORMAT(TMSTAMP,'W') 2 VARCHAR_FORMAT(TMSTAMP,'IW') 10 VARCHAR_FORMAT(TMSTAMP,'WW') 10 VARCHAR_FORMAT(TMSTAMP,'Month') March VARCHAR_FORMAT(TMSTAMP,'MONTH') MARCH VARCHAR_FORMAT(TMSTAMP,'MON') MAR
Exemple: Horodatage à VARCHAR
- Supposons que la variable DTE soit définie comme DATE et qu'elle ait la valeur'2007-03-09'. Les exemples suivants montrent plusieurs appels de la fonction et les valeurs de chaîne résultantes. Le type de données de résultat dans chaque cas est VARCHAR (255):
Function invocation Result ------------------- ------ VARCHAR_FORMAT(DTE,'YYYYMMDD') 20070309 VARCHAR_FORMAT(DTE,'YYYYMMDDHH24MISS') 20070309000000
Exemple: Horodatage à VARCHAR
- Formater l'heure de la représentation de chaîne spécifiée d'un horodatage:
L'instruction SELECT précédente renvoie les valeurs suivantes:SELECT VARCHAR_FORMAT(TIMESTAMP('1979-04-07-14.00.00.000000'), 'HH'), VARCHAR_FORMAT(TIMESTAMP('1979-04-07-14.00.00.000000'), 'HH12') VARCHAR_FORMAT(TIMESTAMP('1979-04-07-14.00.00.000000'), 'HH24'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-00.00.00.000000'), 'HH'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-12.00.00.000000'), 'HH'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-24.00.00.000000'), 'HH'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-00.00.00.000000'), 'HH12'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-12.00.00.000000'), 'HH12'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-24.00.00.000000'), 'HH12'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-00.00.00.000000'), 'HH24'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-12.00.00.000000'), 'HH24'), VARCHAR_FORMAT(TIMESTAMP('2000-01-01-24.00.00.000000'), 'HH24') FROM SYSIBM.SYSDUMMY1;'02' '02' '14' '12' '12' '12' '12' '12' '12' '00' '12' '24'
Exemple: Numérique en VARCHAR
- Supposons que les variables POSNUM et NEGNUM soient définies comme DECFLOAT (34) et aient les valeurs suivantes:'1234.56'et'-1234.56', respectivement. Les exemples suivants montrent plusieurs appels de la fonction et les valeurs de chaîne résultantes.
Function invocation Result ------------------------- ----------- VARCHAR_FORMAT(POSNUM) '1234.56' VARCHAR_FORMAT(NEGNUM) '-1234.56' VARCHAR_FORMAT(POSNUM,'9999.99') ' 1234.56' VARCHAR_FORMAT(NEGNUM,'9999.99') '-1234.56' VARCHAR_FORMAT(POSNUM,'99999.99') ' 1234.56' VARCHAR_FORMAT(NEGNUM,'99999.99') ' -1234.56' VARCHAR_FORMAT(POSNUM,'00000.00') ' 01234.56' VARCHAR_FORMAT(NEGNUM,'00000.00') '-01234.56' VARCHAR_FORMAT(POSNUM,'9999.99MI') '1234.56 ' VARCHAR_FORMAT(NEGNUM,'9999.99MI') '1234.56-' VARCHAR_FORMAT(POSNUM,'S9999.99') '+1234.56' VARCHAR_FORMAT(NEGNUM,'S9999.99') '-1234.56' VARCHAR_FORMAT(POSNUM,'9999.99PR') ' 1234.56 ' VARCHAR_FORMAT(NEGNUM,'9999.99PR') '<1234.56>' VARCHAR_FORMAT(POSNUM,'S$9,999.99') '+$1,234.56' VARCHAR_FORMAT(NEGNUM,'S$9,999.99') '-$1,234.56'
