반응형
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
Mysql에는 다음과 같은 저렴한 방법이 있습니다.
mysql> select ~0;
+----------------------+
| ~0 |
+----------------------+
| 18446744073709551615 |
+----------------------+
틸드는 약간 현명한 부정입니다.결과 값은 큰 의미를 갖습니다.참조: 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)
이러한 값을 제공할 내장 상수가 없는 것 같습니다.변경되지 않을 가능성이 크므로 하드 코딩하거나 값을 룩업 테이블 또는 변수로 설정하는 것이 안전합니다.
언급URL : https://stackoverflow.com/questions/2679064/in-sql-how-do-i-get-the-maximum-value-for-an-integer
반응형
'programing' 카테고리의 다른 글
AngularJS UI 라우터:중첩된 명명된 뷰를 구성하는 방법은 무엇입니까? (0) | 2023.10.03 |
---|---|
스크립트 실행을 무제한으로 설정 (0) | 2023.10.03 |
ClosedXML - 여러 피벗 테이블 작성 (0) | 2023.10.03 |
주문 업데이트를 위한 우커머스 후크 (0) | 2023.10.03 |
주 번호에서 날짜 가져오기 (0) | 2023.10.03 |