SELECT
    CAST("123" AS SIGNED) + 1;

위와 같이 CAST 함수를 이용하여 문자열 타입이었던 "123"을 정수형 123으로 치환해서 1을 더할 수 있게 된다.

 

SIGNED 대신 UNSIGNED 사용 시 출력값이 음수가 되면 out of range가 뜬다. 절대값 출력일 것이라 생각했으나 단순히 양수만 처리 가능한 것 같다.

 

SIGNED 대신 DECIMAL 사용 시 실수 처리 가능.

'IT > Database' 카테고리의 다른 글

[RDBMS] UNION & JOIN  (0) 2021.10.07
[RDBMS] 서브 쿼리  (0) 2021.10.06
[RDBMS] IFNULL, NULLIF 함수  (0) 2021.10.06
[RDBMS] CASE 함수  (0) 2021.10.06
[RDBMS] IF 함수 및 함수 중첩(nest)  (0) 2021.10.06
SELECT
    customer, quantity,
    IF(
        quantity > 5, "Yes", "No"
    ) AS novelty
FROM
    delivery;

IF 함수 안의 인수

  • 첫 번째 : 조건
  • 두 번째 : TRUE
  • 세 번째 : FALSE

 

IF 함수 중첩

SELECT
    customer, quantity,
    IF(
        quantity > 5, "Yes",
        IF(
            quantity > 3, "Next Time", "No"
        )
    ) AS novelty
FROM
    delivery;

첫 번째 IF 함수의 FALSE 자리에 또 다른 IF 함수를 작성함으로써 중첩시킬 수 있다.

첫 번째 IF 함수가 TRUE일 경우 해당 값으로 진행되고, FALSE일 경우 안 쪽의 IF 함수를 확인한다.

 

 


CASE 또는 IF 함수는 주로 SELECT절에서 사용하지만,

WHERE절(조건 분기)과 ORDER BY절(분류 기준 재정의)에서도 사용할 수 있다.

 

'IT > Database' 카테고리의 다른 글

[RDBMS] IFNULL, NULLIF 함수  (0) 2021.10.06
[RDBMS] CASE 함수  (0) 2021.10.06
[RDBMS] WHERE와 HAVING의 차이  (0) 2021.10.05
MySQL Workbench Tips (Updating)  (0) 2021.10.05
[RDBMS] 문자열에 %가 포함되었을 때의 LIKE 검색  (0) 2021.10.01

위의 구조로 된 테이블이 있다. id가 3인 데이터의 val은 "A  "이다 (뒤에 공백 2칸).

SELECT
	*
FROM
	search
WHERE
	val = "A";

위와 같이 SELECT 하면 결과는 id가 1, 2, 3인 데이터가 모두 검색된다.

공백과 대소문자를 판독할 수 없기 때문에 모든 a를 가져온 것이다.

SELECT
	*
FROM
	search
WHERE
	val = BINARY "A";

하지만 앞에 BINARY를 붙여 SELECT 한다면 완벽하게 구분해서 id가 1인 데이터만 출력된다.

+ Recent posts