MySQL에서 필드가 숫자인지 확인하는 방법은 몇 가지가 있어!
필드 타입 확인하기
필드의 데이터 타입을 확인하려면 information_schema.COLUMNS 테이블을 사용할 수 있어:
sql
SELECT DATA_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_NAME='테이블명' AND COLUMN_NAME='컬럼명';
이 쿼리는 해당 컬럼의 데이터 타입(varchar, int 등)을 보여줄 거야
더 자세한 타입 정보를 보려면:
sql
SELECT COLUMN_TYPE
FROM information_schema.COLUMNS
WHERE TABLE_NAME='테이블명' AND COLUMN_NAME='컬럼명';
이렇게 하면 int(11), varchar(255) 같은 형식으로 더 상세한 정보가 나와
데이터 값이 숫자인지 확인하기
특정 컬럼의 데이터가 실제로 숫자인지 확인하려면 REGEXP를 사용할 수 있어:
sql
SELECT * FROM 테이블명
WHERE 컬럼명 REGEXP '^[0-9]+$';
이 쿼리는 해당 컬럼의 값이 숫자로만 이루어진 행들을 찾아줘
반대로 숫자가 아닌 데이터를 찾고 싶다면:
sql
SELECT * FROM 테이블명
WHERE 컬럼명 NOT REGEXP '^[0-9]+$';
숫자형 데이터 타입
참고로 MySQL의 숫자형 데이터 타입은 다음과 같이 있어:
- TINYINT: -128 ~ 127 (UNSIGNED: 0 ~ 255)
- SMALLINT: -32,768 ~ 32,767 (UNSIGNED: 0 ~ 65,535)
- MEDIUMINT: -8,388,608 ~ 8,388,607 (UNSIGNED: 0 ~ 16,777,215)
- INT: -2,147,483,648 ~ 2,147,483,647 (UNSIGNED: 0 ~ 4,294,967,295)
- BIGINT: 매우 큰 범위의 정수
필요에 따라 적절한 타입을 선택하면 좋을 것 같아!
mysql 에서 데이터 값이 숫자만 뽑아내고 싶어
안녕 류이~ MySQL에서 데이터 값이 숫자인 것만 뽑아내고 싶구나! 몇 가지 방법을 알려줄게.
숫자만 있는 데이터 찾기
sql
SELECT * FROM 테이블명
WHERE 컬럼명 REGEXP '^[0-9]+$';
이 쿼리는 해당 컬럼의 값이 숫자로만 이루어진 행들을 찾아줘
문자열에서 숫자만 추출하기
만약 문자열 안에 있는 숫자만 추출하고 싶다면:
sql
SELECT
원본컬럼,
REGEXP_REPLACE(원본컬럼, '[^0-9]', '') AS 숫자만추출
FROM 테이블명;
이렇게 하면 '주문번호 20210708000032 결제'에서 '20210708000032'처럼 숫자만 추출할 수 있어
응용 예시
특정 조건을 추가하고 싶다면:
sql
-- 숫자로만 구성된 데이터 중 특정 길이(예: 10자리)인 것만 찾기
SELECT * FROM 테이블명
WHERE 컬럼명 REGEXP '^[0-9]{10}$';
-- 숫자로 시작하는 데이터 찾기
SELECT * FROM 테이블명
WHERE 컬럼명 REGEXP '^[0-9]';
데이터베이스 문제 해결하는 데 도움이 필요하면 언제든 물어봐! 지난번에 데이터가 하루 지나면 원래 값으로 변경되는 문제도 같이 해결해볼 수 있을 것 같아.
함수로는 없어? 저건 정규식인데 isnumeric 같은 함수
MySQL에는 안타깝게도 SQL Server처럼 ISNUMERIC()이라는 내장 함수가 없어 . SQL Server에서는 ISNUMERIC 함수로 문자열이 숫자 형식인지 확인할 수 있는데, MySQL에서는 그런 함수가 기본 제공되지 않아 .
하지만 직접 함수를 만들어서 사용할 수는 있어! 이런 식으로:
sql
CREATE FUNCTION isNumber(inputValue VARCHAR(255))
RETURNS TINYINT
DETERMINISTIC
BEGIN
DECLARE result TINYINT DEFAULT 0;
IF inputValue REGEXP '^[0-9]+$' THEN
SET result = 1;
END IF;
RETURN result;
END
이 함수를 만들어두면 이렇게 사용할 수 있어:
sql
SELECT * FROM 테이블명 WHERE isNumber(컬럼명) = 1;
이렇게 하면 숫자만 있는 데이터를 쉽게 찾을 수 있을 거야 .
더 복잡한 숫자 체크(소수점이 있는 경우 등)가 필요하면 정규식을 조금 수정해서:
sql
CREATE FUNCTION isNumber(inputValue VARCHAR(255))
RETURNS TINYINT
DETERMINISTIC
BEGIN
RETURN inputValue REGEXP '^-?[0-9]*.?[0-9]+$';
END
이런 식으로 만들 수도 있어 .
'시스템' 카테고리의 다른 글
mysql update쿼리를 했는데 그게 db 저장이 바로 안돼~! (0) | 2025.10.01 |
---|---|
TRX 코인은 어떤코인이야? (2) | 2025.09.23 |
💧 혁신적인 건강 파트너! AI 수소수 정수기! 이제 정수기도 AI!! 🚰 (4) | 2025.06.02 |
혁신의 정점을 찍다: Apple MacBook Pro M4 상세 스펙 분석과 사용 후기 (0) | 2025.04.18 |
📱 애플 아이폰 16 Pro Max 리뷰 – 스펙부터 실사용 후기까지 완벽 정리 (0) | 2025.04.16 |