복붙노트

[SQL] SQL에서 어떻게 정수의 최대 값을받을 수 있나요?

SQL

SQL에서 어떻게 정수의 최대 값을받을 수 있나요?

나는 MySQL 데이터베이스의 정수 (부호 또는 부호)의 최대 값을 찾기 위해 노력하고있다. 데이터베이스 자체에서이 정보를 철수 할 수있는 방법이 있습니까?

거기에 어떤 내장 상수 또는 내가 사용할 수있는 기능 (중 표준 SQL 또는 MySQL의 특정).

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

해결법

  1. ==============================

    1.MySQL의에서이 작업을 수행하는 싼 트릭이있다 :

    MySQL의에서이 작업을 수행하는 싼 트릭이있다 :

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

    물결표는 비트 부정이다. 결과 값은 BIGINT이다. 참조 : http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html#operator_bitwise-invert

    다른 정수 맛을 위해, 당신은과 같이 올바른 bitshift 연산자를 >> 사용할 수 있습니다 :

    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)
    
  2. ==============================

    2.모든 내장이 값을 공급하는 상수있을 것 같지 않습니다. 가장 가능성이 그들이 변경되지 않습니다 때문에, 당신은 안전하거나 하드 코딩을하거나 조회 테이블이나 변수에 그 값을 설정해야합니다.

    모든 내장이 값을 공급하는 상수있을 것 같지 않습니다. 가장 가능성이 그들이 변경되지 않습니다 때문에, 당신은 안전하거나 하드 코딩을하거나 조회 테이블이나 변수에 그 값을 설정해야합니다.

  3. from https://stackoverflow.com/questions/2679064/in-sql-how-do-i-get-the-maximum-value-for-an-integer by cc-by-sa and MIT license