我试图从 MySQL 数据库中找出整数(有符号或无符号)的最大值。有没有办法从数据库本身提取这些信息?
是否有我可以使用的内置常量或函数(标准 SQL 或 MySQL 特定的)。
At http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html它列出了值 - 但数据库有没有办法告诉我。
以下给出了 MAX_BIGINT - 我想要的是 MAX_INT。
SELECT CAST( 99999999999999999999999 AS SIGNED ) as max_int;
# max_int | 9223372036854775807
在 Mysql 中,有一个廉价的技巧可以做到这一点:
mysql> select ~0;
+----------------------+
| ~0 |
+----------------------+
| 18446744073709551615 |
+----------------------+
波形符是按位求反。结果值是一个 bigint。看:http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html#operator_bitwise-invert http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html#operator_bitwise-invert
对于其他整数风格,您可以使用正确的位移运算符>>
像这样:
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)