Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In SQL how do I get the maximum value for an integer?

Tags:

sql

mysql

I am trying to find out the maximum value for an integer (signed or unsigned) from a MySQL database. Is there a way to pull back this information from the database itself?

Are there any built-in constants or functions I can use (either standard SQL or MySQL specific).

At http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html it lists the values - but is there a way for the database to tell me.

The following gives me the MAX_BIGINT - what I'd like is the MAX_INT.

SELECT CAST( 99999999999999999999999 AS SIGNED ) as max_int; # max_int | 9223372036854775807 
like image 258
CoffeeMonster Avatar asked Apr 20 '10 22:04

CoffeeMonster


People also ask

How do I SELECT just the value of an integer in sql?

select yourColumnName from yourTableName where yourColumnName REGEXP '^-?[0-9]+$'; The query wherein we have used regular expression. This will output only the integer value.

How do I find the minimum and maximum value in sql?

To ask SQL Server about the minimum and maximum values in a column, we use the following syntax: SELECT MIN(column_name) FROM table_name; SELECT MAX(column_name) FROM table_name; When we use this syntax, SQL Server returns a single value. Thus, we can consider the MIN() and MAX() functions Scalar-Valued Functions.

Is there a max function in sql?

MAX() functionThe aggregate function SQL MAX() is used to find the maximum value or highest value of a certain column or expression. This function is useful to determine the largest of all selected values of a column.


1 Answers

In Mysql there is a cheap trick to do this:

mysql> select ~0; +----------------------+ | ~0                   | +----------------------+ | 18446744073709551615 | +----------------------+ 

the tilde is the bitwise negation. The resulting value is a bigint. See: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html#operator_bitwise-invert

For the other integer flavours, you can use the right bitshift operator >> like so:

SELECT ~0 as max_bigint_unsigned ,      ~0 >> 32 as max_int_unsigned ,      ~0 >> 40 as max_mediumint_unsigned ,      ~0 >> 48 as max_smallint_unsigned ,      ~0 >> 56 as max_tinyint_unsigned ,      ~0 >> 1  as max_bigint_signed ,      ~0 >> 33 as max_int_signed ,      ~0 >> 41 as max_mediumint_signed ,      ~0 >> 49 as max_smallint_signed ,      ~0 >> 57 as max_tinyint_signed \G  *************************** 1. row ***************************    max_bigint_unsigned: 18446744073709551615       max_int_unsigned: 4294967295 max_mediumint_unsigned: 16777215  max_smallint_unsigned: 65535   max_tinyint_unsigned: 255      max_bigint_signed: 9223372036854775807         max_int_signed: 2147483647   max_mediumint_signed: 8388607    max_smallint_signed: 32767     max_tinyint_signed: 127 1 row in set (0.00 sec) 
like image 152
Roland Bouman Avatar answered Sep 22 '22 15:09

Roland Bouman