Den bästa datatypen för en grundläggande löneskala i SQL beror på flera faktorer, men i allmänhet vill du använda en
numerisk typ som möjliggör decimalvärden. Här är en uppdelning av vanliga val och varför:
* `decimal (p, s)` eller `numerisk (p, s)`: Det här är de mest exakta alternativen. `P` representerar det totala antalet siffror (precision), och` s` representerar antalet siffror efter decimalpunkten (skala). Till exempel tillåter `decimal (10, 2)` siffror upp till 99999999.99. Detta är ett bra val om du behöver lagra mycket exakta lönebelopp, och du känner till det maximala värdet i förväg.
* `float` eller` dubbel precision`: Dessa är flytande punkttyper som kan lagra ett bredare sortiment. De är emellertid ungefärliga, vilket innebär att de kanske inte lagrar det exakta värdet du matar in på grund av hur flytande punktnummer representeras i binära. Använd dessa endast om du inte behöver extremt exakta värden (t.ex. om små avrundningsfel är acceptabla).
* `heltal eller` int`: Undvik detta om inte alla dina löner är hela siffror. Du kommer att förlora precision om du har cent.
Rekommendation:
För de flesta löneapplikationer är `Decimal (p, s)` den rekommenderade datatypen. Välj lämpliga värden för `p` och` s` baserat på det troliga utbudet av löner och din nödvändiga precision. Till exempel:
* `Decimal (10, 2)` skulle räcka för de flesta lönsområden, vilket möjliggör värden upp till 9 999 999,99.
* Om du förutser exceptionellt höga löner kan du öka `p`.
Kom ihåg att överväga framtida tillväxt och potentiellt högre löner när du väljer `p`. Det är bättre att välja en något större `P` än absolut nödvändigt för att undvika datavkortningsproblem i framtiden. Att använda `s =2 'är vanligtvis tillräckligt för valutavärden i de flesta länder.