MySQL 숫자 조건 - MySQL susja jogeon


▶설명


MySQL 연산자는 특정 작업을 하기 위한 기호 또는 문자입니다.

▶비교 연산자 (관계 연산자)

설명

비교 연산자는 주어진 좌우 값을 비교하는 연산자입니다.

연산자

연산자

의미

=

같다

!=, <>

같지 않다

>, <

크다, 작다. 

 >=, <=

 크거나 같다, 작거나 같다. 

예제 쿼리 (Example Query)

age가 20인 데이터 조회 / = 예제

SELECT name, age FROM table_name WHERE age = 20;

age가 20이 아닌 데이터 조회 / != 예제

SELECT name, age FROM table_name WHERE age != 20;

age가 20 미만인 데이터 조회 / < 예제

SELECT name, age FROM table_name WHERE age < 20;

age가 20 초과인 데이터 조회 / > 예제

SELECT name, age FROM table_name WHERE age > 20;

age가 20 이하인 데이터 조회 / <= 예제

SELECT name, age FROM table_name WHERE age <= 20;

age가 20 이상인 데이터 조회 / >= 예제

SELECT name, age FROM table_name WHERE age >= 20;

▶논리 연산자

설명

논리 연산자는 참(true), 거짓(false) 두 가지를 가지고 비교하는 연산자입니다.

연산자

연산자 

의미 

 AND, &&

비교하는 값 모두 참(true)여야 결과가 참(true)

 OR, ||

비교하는 값 중 하나라도 참(true)이면 결과가 (true) 

예제 쿼리 (Example Query)

age가 15이상 20이하인 데이터 조회 / AND 예제

SELECT name, age FROM table_name WHERE age >= 15 AND age <= 20;

age가 18 또는 21인 데이터 조회 / OR 예제

SELECT name, age FROM table_name WHERE age = 18 OR age = 21;

▶기타 연산자

설명

비교 연산자나 논리 연산자는 일반적인 프로그래밍 언어와 비슷하지만 DBMS에서만 사용하는 연산자가 존재합니다.

연산자

 연산자

의미 

 IN(값1, 값2 ...)

IN 안에 있는 값이 있는 경우 

 NOT IN(값1, 값2 ...)

NOT IN 안에 있는 값이 없는 경우 

BETWEEN a AND b 

a 이상 b 이하의 값 

LIKE('값%'), LIKE('%값'), LIKE('%값%')

값이 처음, 끝, 어디든지 포함된 경우

NOT LIKE('값%'), NOT LIKE('%값'), NOT LIKE('%값%') 

값이 처음, 끝, 어디든지 포함되지 않은 경우 

 IS NULL

NULL 인 경우 

 IS NOT NULL

NULL 이 아닌 경우

예제 쿼리 (Example Query)

age가 18 또는 21인 데이터 조회 / IN 예

SELECT name, age FROM table_name WHERE age IN (18, 21);

age가 18 또는 21이 아닌 데이터 조회 / NOT IN 예

SELECT name, age FROM table_name WHERE age NOT IN (18, 21);

age가 15이상 20이하인 데이터 조회 / BETWEEN 예제

SELECT name, age FROM table_name WHERE age BETWEEN 15 AND 20;

name이 '반'으로 시작하는 데이터 조회 / LIKE 처음 예제

SELECT name, age FROM table_name WHERE name LIKE '반%';

name이 '수'로 끝나는 데이터 조회 / LIKE 끝 예제

SELECT name, age FROM table_name WHERE name LIKE '%수';

name이 '갑'을 포함하는 데이터 조회 / LIKE 포함 예제

SELECT name, age FROM table_name WHERE name LIKE '%갑%';

country가 NULL 인 데이터 조회 / NULL 예제

SELECT name, age, country FROM table_name WHERE country IS NULL;

country가 NOT NULL 인 데이터 조회 / NOT NULL 예제

SELECT name, age, country FROM table_name WHERE country IS NOT NULL;

절댓값 반환 함수 ABS()

-- ABS(숫자)
SELECT ABS(-123)
결과: 123

설정값 기준으로 반올림 함수 ROUND()

-- ROUND(숫자, 설정값)
SELECT ROUND(1.56, 1)
결과: 1.60

크거나 같은 최소 정수 추출 함수 CEILING()

-- CEILING(숫자)
SELECT CEILING(1.56)
결과: 2

작거나 같은 최소 정수 추출 함수 FLOOR()

-- FLOOR(숫자)
SELECT FLOOR(1.56)
결과: 1

n의 m 거듭 제곱 함수 POWER()

-- POWER(n, m)
SELECT POWER(3, 2)
결과: 9

n의 제곱근 함수 SQRT()

-- SQRT(n)
SELECT SQRT(9)
결과: 3

숫자만 들어있는 컬럼이라 정렬했더니 

1
11
12
2
21
.
.
.

이런식으로 정렬되는 경우가 있다...

컬럼의 type을 INT가 아닌 VARCHAR로 되어 있는 경우다 
업무상 이렇게 데이터베이스를 설계할 경우도 있지만... 
이럴때 어떻게 정렬해야 제대로 표현될까

MySQL에서는 CAST(값, 데이터형식[길이]), CONVERT(값, 데이터형식[길이])로 타입을 변경 시켜준다
데이터형식[길이]는 생략 가능하다
type의 종류는 binary, char, signed (부호있는 숫자), date, datetime, time, unsigned (부호없는 숫자) 등이 있다.

CAST(값, 데이터형식[길이])
방법은
select*fromcustomers orderbycast(customers_id as unsigned);
문자를 숫자로 변환할 때에는 select cast('1' as unsigned) as test
숫자를 문자로 변환할 때에는 select cast(2 as char(1)) as test

CONVERT(값, 데이터형식[길이])

MySQL 숫자 조건 - MySQL susja jogeon

CONVERT() 사용하면 2.9167을 SIGNED INTEGER형으로 변경하면 3이 출력 된다
참고 SIGNED INTEGER는 부호가 있는 정수(-21억~21억)를 나타내고
UNSIGNED INTEGER는 부호가 없는 정수(0~42억)을 나타낸다.

MYSQL이나 MSSQL에서 대표적인 데이터 타입 변환함수는 CONVERT인데요.
오라클에서는 동작하지 않습니다. 오라클에서 데이터 타입 변경을 하고 싶을때는 다른 함수를 사용하여야 합니다.
TO_[데이터타입]이다. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있습니다.