2024.07.02
코드카타를 풀다가.. 아니 공백을 넣어야 정답이 되는 게 있어서 어이가 없었지만...
공백을 넣는 것도 있구나.. 싶어서 찾아본 공백 넣기.. 그리고 공백과 NULL의 구분!
그리고 의식의 흐름으로 nullif하고 ifnull의 차이를 공부했다.
✳️ ' '
제일 간단한 방법으로는 작은 따옴표 안에 공백을 치고 넣어 주는 방식이 있다.
CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소'
내가 풀다가 공백을 넣어야 했던 그 부분을 끌어오자면...
위에 코드는 시, 도로명 주소, 상세주소가 있는 컬럼들을 하나로 출력 되게 하기 위해 CONCAT으로 묶어준 것인데 공백을 넣어줘야 해서 사이사이에 ' '를 넣어 줬다.
✳️ SPACE(n)
n은 지정하는 개수이고 그만큼 공백을 추가하는 함수
CONCAT(CITY, SPACE(1), STREET_ADDRESS1, SPACE(1), STREET_ADDRESS2) AS '전체주소'
이렇게 작은 따옴표 대신에 공백을 줄 수 있다.
✳️ CONCAT_WS (구분자, 컬럼1 or 문자열1, 컬럼2 or 문자열2, ...)
이건 보다가 신기해서 추가로 넣는.. 함수.. ㅎ
구분자로 구분하고 결합할 수 있는 함수이다. 컬럼 혹은 문자열을 구분자로 구분해서 조합할 때 쓰인다.
where 절에도 이용이 가능하다.
1️⃣ 각 열끼리 연결
위에 코드를 이용해보면,
CONCAT_WS(' ', CITY, STREET_ADDRESS1, STREET_ADDRESS2) AS '전체주소'
구분자 부분에 공백을 표시하고 각 컬럼 사이에 공백을 넣어줄 것이다! 라고 쓸 수 있는 것이다.
컬럼은 작은 따옴표로 감싸서 표현하지 않는다.
2️⃣ 문자열을 연결할 때
예시로 만약 어떤 데이터에 이메일이 @ 기준 앞 뒤로 나뉘어 있어서 완전한 이메일로 만들기 위해 합쳐준다고 생각해보면,
CONCAT_WS('@', 'abc123', 'gmail.com')
# abc123@gamil.com
문자열이기 때문에 작은 따옴표로 감싸주기!
➕ 참고사항!
CONCAT과 다른 부분이 있다! 바로 NULL을 처리한 결과!
CONCAT : NULL이 포함된 부분은 NULL로 결과가 출력
CONCAT_WS : NULL이 포함되어 있어도 무시하고 출력
SELECT CONCAT_WS(':::', 'HELLO', NULL, 'BYE');
# HELLO:::BYE
✳️ NULL값과 공백값 확인하기
이렇게 조사하다 보니.. NULL과 공백의 차이를 확실히 하고 조회하는 걸 정리 해두는 것이 좋을 것 같아서 정리한다.
보통 Where 절에서 이용하는 것 같다.
그리고 MySQL에서는 NULL은 NULL, 공백은 공백( ' ' )대로 따로 처리한다.
1️⃣ NULL
: 데이터 값이 존재하지 않는 경우
- 확인 방법
컬럼 IS NULL
컬럼 IS NOT NULL
2️⃣ Empty
: 데이터 값이 비어 있는 경우
- 확인 방법
컬럼 = ' '
컬럼 != ' '
3️⃣ Null이거나 공백일 경우 가져오기
컬럼 IS NULL OR 컬럼 = ' '
이렇게 가져와도 되지만,,
NULLIF를 이용해도 된다.
NULLIF(컬럼, ' ') IS NULL
NULLIF를 이용하여 해당 컬럼명이 공백( ' ' )과 같다면 null로 치환하여 해당 컬럼이 null인지 여부를 체크하는 방식
그렇다면 NULLIF와 IFNULL의 차이는 뭐지?
✳️ NULLIF (A, B)
: 두 개의 값이 같은지 확인하는 목적으로 이용
A == B 라면 NULL을 반환,
A != B 라면 A를 반환
✳️ IFNULL (A, B)
: 첫 번째 값 이 NULL인지 확인하는 목적으로 이용, NULL을 대체하는 함수
A가 NULL 값이면, B를 반환
참고자료 사이트
https://bramhyun.tistory.com/13
https://velog.io/@jonghne/swzuqxsr
'📒 Today I Learn > 🐬 SQL' 카테고리의 다른 글
[SQL] WITH 절 (0) | 2024.07.03 |
---|---|
[SQL] COALESCE ( ) (0) | 2024.07.02 |
[SQL] Window 함수 (0) | 2024.07.01 |
[SQL] REGEXP, 날짜 추출 함수, 올림/반올림/내림/버림 (0) | 2024.06.26 |
[SQL 기초] 5주차 강의 (0) | 2024.06.24 |