Je récupère une colonne nommée removal_count dans ma requête à l'aide de la fonction COUNT (). Dans result, le type de données de removal_count est BIGDECIMAL. Je veux convertir le nombre en cinq chiffres. SO Si la valeur est inférieure à cinq chiffres, elle doit être représentée par un zéro non significatif.
par exemple 1) Si le nombre d'enlèvement est 540, affichez 00540
2) Si le nombre d'enlèvement est de 60, affichez 00060
Si le nombre de suppressions est un entier/une valeur de chaîne, je peux ajouter des zéros en tête à l'aide d'une expression Java:
--if removal_count is integer--
String.format("%05d",removal_count)
--if removal_count is string--
("00000"+removal_count).subString(removal_count.length())
Pouvons-nous convertir removal_count en chaîne ou en entier (à partir de grandes décimales) afin que je puisse utiliser une expression Java donnée? Sinon, y a-t-il un moyen d'ajouter des zéros en tête dans la requête elle-même?
Vous pouvez le faire de deux manières.
Méthode 1
Utiliser LPAD.
Par exemple,
SQL> WITH DATA(num) AS(
2 SELECT 540 FROM dual UNION ALL
3 SELECT 60 FROM dual UNION ALL
4 SELECT 2 FROM dual
5 )
6 SELECT num, lpad(num, 5, '0') num_pad FROM DATA;
NUM NUM_P
---------- -----
540 00540
60 00060
2 00002
SQL>
La clause WITH sert uniquement à générer des exemples de données pour la démonstration. Dans votre requête, procédez comme suit:
lpad(removal_count, 5, '0')
Rappelez-vous qu'un nombre ne peut pas avoir zéros. Le résultat de la requête ci-dessus est un string et non un number.
Méthode 2
Utilisation de TO_CHAR et du modèle de format:
SQL> WITH DATA(num) AS(
2 SELECT 540 FROM dual UNION ALL
3 SELECT 60 FROM dual UNION ALL
4 SELECT 2 FROM dual
5 )
6 SELECT num, to_char(num, '00000') num_pad FROM DATA;
NUM NUM_PA
---------- ------
540 00540
60 00060
2 00002
SQL>
Update: pour éviter l'espace supplémentaire utilisé pour le signe moins, utilisez FM au format TO_CHAR
:
Sans FM:
SELECT TO_CHAR(1, '00000') num_pad,
LENGTH(TO_CHAR(1, '00000')) tot_len
FROM dual;
NUM_PAD TOT_LEN
------- ----------
00001 6
Avec FM:
SELECT TO_CHAR(1, 'FM00000') num_pad,
LENGTH(TO_CHAR(1, 'FM00000')) tot_len
FROM dual;
NUM_PAD TOT_LEN
------- ----------
00001 5
Utilisez la fonction LPAD
pl/sql http://www.techonthenet.com/Oracle/functions/lpad.php .
removal_count = 540
LPAD(TO_CHAR(removal_count), 5, '0');
Result: '00540'
Dans sqlplus, vous pouvez utiliser le format col:
SQL> sélectionnez 540 aa, 540 bb parmi dual;
AA BB
540 540
SQL> col format bb 00000
SQL> /
AA BB
540 00540
SQL>