sql >> Databasteknik >  >> RDS >> Mysql

Hur man formaterar siffror som valuta i MySQL

Vissa DBMS ger oss möjligheten att formatera ett tal som en valuta genom att tillhandahålla en formatspecifikation för valutasymbolen. Genom att tillhandahålla en sådan formatspecifikation kan DBMS returnera lämplig valutasymbol för lokalen.

MySQL har ingen valutaformatspecifikation, så vi måste göra lite extra arbete om vi vill att valutasymbolen ska returneras.

Exempel

Här är ett exempel på att returnera ett nummer som valuta i MySQL:

SELECT CONCAT('$', FORMAT(1234.5678, 2));

Resultat:

$1,234.57

Här använde vi CONCAT() funktion för att sammanfoga valutasymbolen och siffran. Vi använde även FORMAT() funktion för att formatera numret i önskat format.

Ange ett språk

FORMAT() funktion accepterar ett valfritt tredje argument för lokalen. Detta låter dig formatera numret med den angivna lokalen.

Exempel:

SELECT CONCAT('€', FORMAT(1234.5678, 2, 'de_DE'));

Resultat:

€1.234,57

I det här fallet är vår valutasymbol eurosymbolen ( ) istället för dollartecknet, och vi specificerade att numret skulle formateras med tyska numreringskonventioner, som använder en punkt för gruppavgränsaren och ett kommatecken för decimalkomma.

Formatera i applikationen kontra databasen

Det rekommenderas vanligtvis att valutaformatering etc görs på applikationsnivå snarare än på databasnivå. Applikationsprogrammeringsmiljöer har vanligtvis bättre formateringsmöjligheter än DBMS, och det är vanligtvis bättre att få oformaterad data som returneras av DB, så att applikationen kan starta med ett rent blad och formatera det efter behov.

Som sagt, ibland kräver situationen formatering på databasnivå, i vilket fall ovanstående tekniker kan vara användbara.


  1. Vad är en platt fildatabas? Hur skiljer det sig från en relationsdatabas?

  2. Samla rekursiva JSON-nycklar i Postgres

  3. Tidigare Capgemini Executive, Sunitha Ray, går med i ScaleGrid DBaaS för att utöka företagsförsäljningen

  4. Oracle SQL Where-klausul för att hitta datumposter äldre än 30 dagar