Unsigned Integers in SQL Server, Oracle, MySQL, Postgres, and DB2

A recent project required the need to store an unsigned 64-bit integer in a SQL Server database table. BIGINT won't cut it because BIGINT has a max value of 9,223,372,036,854,775,807 (signed 64-bit integer), and the unsigned 64-bit integer's max value is 18,446,744,073,709,551,615.  The solution is to use NUMERIC(20) instead.

I recalled that other DBMS's do support unsigned integers as integer types vs. coercion with numeric, so I decided to compare a few of them and document them here.

DBMSUnsigned 64BitUnsigned 32BitUnsigned 16Bit
SQL Server (as of "Denali") numeric(20) numeric(10) numeric(5)
Oracle (as of 11g) number(20), numeric(20)number(10), numeric(10) number(5), numeric(5)
MySQL (as of 5.x) bigint, numeric(20) int, numeric(10) smallint, numeric(5)
Postgres (as of 9.x) numeric(20) numeric(10)numeric(5)
DB2 UDB (as of 9.x) numeric(20) numeric(10)numeric(5)

Comments

Popular posts from this blog

Adding New Microsoft Extensions to Legacy WCF and ASMX Web Services

Using NHibernate in Asp.Net Core

Code Coverage for Multiple Projects in a Single Build using Dotnet Test and Coverlet