Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 값이 정수인지 어떻게 확인합니까?

<시간/>

주어진 값이 문자열인지 확인하기 위해 우리는 cast() 함수를 사용합니다. 값이 숫자가 아니면 0을 반환하고, 그렇지 않으면 숫자 값을 반환합니다. 이런 식으로 값이 정수인지 아닌지 확인할 수 있습니다.

사례 1 - 정수가 포함된 문자열 확인

mysql> select cast('John123456' AS UNSIGNED);

다음은 출력입니다. 값이 숫자가 아니므로 0이 반환됨을 나타냅니다.

+--------------------------------+
| cast('John123456' AS UNSIGNED) |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)

사례 2 - 정수 값만 확인

mysql> select cast('123456' AS UNSIGNED);

다음은 출력입니다. 값이 숫자임을 나타내므로 값 자체가 반환됩니다.

+----------------------------+
| cast('123456' AS UNSIGNED) |
+----------------------------+
|                     123456 |
+----------------------------+
1 row in set (0.00 sec)

이 논리는 float에서도 잘 작동합니다.

다음은 float 값을 사용하는 쿼리입니다.

mysql>  SELECT CAST('78.90' AS UNSIGNED);

다음은 출력입니다.

+---------------------------+
| CAST('78.90' AS UNSIGNED) |
+---------------------------+
|                        78 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)

일반 연산자를 사용한 대체 논리

부동 소수점을 포함한 모든 값에 대한 모든 조건에서 작동합니다.

새 테이블을 만들어 보겠습니다.

mysql> create table CheckingIntegerDemo
   -> (
   -> Value varchar(200)
   -> );
Query OK, 0 rows affected (0.88 sec)

테이블에 레코드 삽입.

mysql> insert into CheckingIntegerDemo values('John123456');
Query OK, 1 row affected (0.10 sec)

mysql>  insert into CheckingIntegerDemo values('123456');
Query OK, 1 row affected (0.16 sec)

mysql> insert into CheckingIntegerDemo values('123.456');
Query OK, 1 row affected (0.16 sec)

모든 기록을 표시합니다.

mysql> select *from CheckingIntegerDemo;

다음은 출력입니다.

+------------+
| Value      |
+------------+
| John123456 |
| 123456     |
| 123.456    |
+------------+
3 rows in set (0.00 sec
)

위의 출력에서 ​​123456만 정수이고 나머지는 정수가 아닙니다.

값이 정수인지 확인하는 구문입니다.

select yourColumnName from yourTableName where yourColumnName REGEXP '^-?[0-9]+$';

정규 표현식을 사용한 쿼리입니다. 정수 값만 출력합니다.

mysql> select Value from CheckingIntegerDemo where Value REGEXP '^-?[0-9]+$';

다음은 출력입니다.

+--------+
| Value  |
+--------+
| 123456 |
+--------+
1 row in set (0.00 sec)