날짜 데이터 → 문자열로 변환
날짜의 요소값을 원하는 형식으로 문자열로 만들어 출력하는 함수
원- 하는 형식문자는 순서나 반복 사용도 제한이 없으므로 원하는 형태로 작성해서 활용할 수 있다.
SELECTnow(),date_format(now(),'%Y-%M-%d')ASNOW;
now() |NOW |
-------------------+----------------------+
2023-03-06 15:27:52|2023/March/06 15:27:52|
SELECTemployee_id,date_format(hire_date,'%Y-%M-%d %W')AS"입사일"
FROMemployees;
employee_id|입사일 |
-----------+--------------------------+
100|1987-June-17 Wednesday |
101|1989-September-21 Thursday|
102|1993-January-13 Wednesday |
103|1990-January-03 Wednesday |
104|1991-May-21 Tuesday |
105|1997-June-25 Wednesday |
106|1998-February-05 Thursday |
107|1999-February-07 Sunday |
108|1994-August-17 Wednesday |
SELECTcast("123"AS signed),cast("-123.45"AS signed);
cast("123" AS signed)|cast("-123.45" AS signed)|
---------------------+-------------------------+
123| -123|
SELECTcast("123"ASunsigned),cast("123.45"ASunsigned);
cast("123" AS unsigned)|cast("123.45" AS unsigned)|
-----------------------+--------------------------+
123| 123|
SELECTcast("-123.45"ASunsigned);
cast("-123.45" AS unsigned)|
---------------------------+
18446744073709551493|
SELECTif(100>200,'참','거짓')AS"결과";
결과|
--+
거짓|
SELECTemployee_id, salary,if(salary>10000,'1등급','2등급')"급여 등급"
FROMemployees;
employee_id|salary |급여 등급|
-----------+--------+-----+
100|24000.00|1등급 |
101|17000.00|1등급 |
102|17000.00|1등급 |
103| 9000.00|2등급 |
104| 6000.00|2등급 |
105| 4800.00|2등급 |
…
NULL의 대체값을 출력할 수 있는 함수
ifnull(입력값, NULL대체값)
입력된 값이 NULL이 아닌 경우 그대로 입력값이 결과로 출력, NULL인 경우 대체값으로 입력된 값이 출력된다.
컬럼의 값과 NULL의 대체값은 같은 함수의 출력결과이므로 하나의 컬럼에 동시에 출력될 수 있도록 동일한 데이터타입으로 구성되어야 한다.
SELECTifnull(NULL,'널이네')AS"결과1",
ifnull(100,'널널이네')AS"결과2";
결과1|결과2|
---+---+
|100|
SELECTemployee_id, first_name, last_name,
NULLIF(length(first_name),length(last_name))AS"결과"
FROMemployees;
employee_id|first_name |last_name |결과|
-----------+-----------+-----------+--+
100|Steven |King | 6|
101|Neena |Kochhar | 5|
102|Lex |De Haan | 3|
103|Alexander |Hunold | 9|
104|Bruce |Ernst | |
105|David |Austin | 5|
106|Valli |Pataballa | 5|
107|Diana |Lorentz | 5|
CASE 기준컬럼 WHEN 조건값1 THEN 출력값1
[WHEN 조건값2 THEN 출력값2 …][ELSE 기본값]
END
SELECTCASE10WHEN1THEN'일'
WHEN5THEN'오'
WHEN10THEN'십'
ELSE'모름'
ENDAS"case예제";
case예제|
------+
십 |
SELECTemployee_id, last_name, department_id,CASEdepartment_idWHEN10THEN'부서 10'
WHEN50THEN'부서 50'
WHEN100THEN'부서 100'
WHEN150THEN'부서 150'
WHEN200THEN'부서 200'
ELSE'기타 부서'
ENDAS"부서 정보"
FROMemployees;
employee_id|last_name |department_id|부서 정보 |
-----------+-----------+-------------+------+
100|King | 90|기타 부서 |
101|Kochhar | 90|기타 부서 |
102|De Haan | 90|기타 부서 |
103|Hunold | 60|기타 부서 |
104|Ernst | 60|기타 부서 |
105|Austin | 60|기타 부서 |
106|Pataballa | 60|기타 부서 |
107|Lorentz | 60|기타 부서 |
108|Greenberg | 100|부서 100|
109|Faviet | 100|부서 100|
110|Chen | 100|부서 100|
111|Sciarra | 100|부서 100|
112|Urman | 100|부서 100|
113|Popp | 100|부서 100|
114|Raphaely | 30|기타 부서 |
115|Khoo | 30|기타 부서 |