Partager des exemples de formatage de nombres dans SQL

零下一度
Libérer: 2023-03-10 16:46:02
original
2178 Les gens l'ont consulté

Utilisez des instructions SQL pour formater des données doubles, par exemple, supprimez uniquement les deux chiffres après la virgule décimale
Un. Méthode principale

--prendre le nombre avant la décimale, sans tenir compte de l'arrondi
select left('30000.72234', charindex('.', '30000.72234')-1)
où : charindex (' .', '30000.72234') pour obtenir la position du point décimal ; -1 signifie tout avant le point décimal. Si vous voulez obtenir n après le point décimal, écrivez simplement +n. C'est bien utile.

--séparez tous les trois chiffres par des virgules, laissez 2 décimales et ne considérez pas l'arrondi
select convert(varchar, cast(round(30000.72234,0) as money), 1)

--Séparez tous les trois chiffres par des virgules, sans laisser de décimales, pensez à arrondir
select left(convert(varchar, cast(round(30000.72234,0) as money), 1) , charindex('.', convert( varchar, cast(round(30000.72234,0) as money), 1))-1)


deux. Comparaison de CAST et ROUND
1.
SELECT CAST('123.456' en décimal) obtiendra 123 (le point décimal sera omis).
Si vous souhaitez obtenir deux chiffres après la virgule.
Vous devez modifier ce qui précède en
SELECT CAST('123.456' as decimal(38, 2))

===>123.46
Il sera automatiquement arrondi !

2.
SELECT ROUND(123.75633, 2, 1),
ROUND(123.75633, 2)
Les deux valeurs obtenues par le SQL ci-dessus sont différentes. : 123.75000, ce dernier est : 123.76000.
Parce que le premier a été tronqué avant l'arrondi, laissant 2 chiffres après la virgule.
Ce dernier n'est pas intercepté. Une fois arrondi, il obtiendra naturellement 123,76000


Problème : Il faut calculer le ratio de la valeur interrogée dans la base de données Oracle. SQL similaire à ce qui suit :
Sélectionnez Round((remise/Montant),2) parmi dual ;

Les nombres calculés de cette manière peuvent répondre à la plupart des besoins. Mais pour les nombres inférieurs à 1, un problème surgit... des données similaires à 0,45 sont affichées. Le 0 devant 0,45 a disparu.

Ce qui suit résume deux méthodes pour résoudre le problème des 0 manquants.

La première solution :
SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, '.', '0.'),TO_CHAR (1/100))
FROM DUAL ;

Il vous suffit de remplacer 1/100 par le pourcentage dont vous avez besoin.

La deuxième solution :
SELECT RTrim(To_Char(1/100,'FM99999999990.9999'),'.') FROM dual;

La méthode de remplacement est la même que ci-dessus .

Comparaison détaillée des deux méthodes :

La première formule est plus complexe, mais elle peut gérer des valeurs numériques générales.

La seconde semble simple, mais le nombre de chiffres dans la valeur formatée doit être supérieur au nombre de chiffres dans le calcul. Par exemple, SELECT RTrim(To_Char(200,'FM90.9999'),'.') FROM dual; La valeur affichée est ########, car elle a dépassé la plage de formatage.

--------------------

J'ai trouvé que la valeur du champ a dans la table tb était de 0,4286. ? Il peut être converti en un pourcentage de 42,9% (garder une décimale après la virgule)
Par exemple,
sélectionnez a dans tb
0,4286
Le résultat que je veux obtenir est
42,9%

Code SQL

select cast(cast(a*100 as decimal(18,1)) as varchar) + '%' from tb


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!