FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm'를 붙여 출력
- 컬럼명은 'MAX_LENGTH'로 지정
- SELECT 문에서 cm을 LENGTH컬럼에 붙인 후 해당 컬럼에서 최대 길이를 MAX로 찾는다.
- 컬럼명을 MAX_LENGTH로 바꾼다!
SELECT MAX(CONCAT(LENGTH, 'cm')) AS MAX_LENGTH FROM FISH_INFO;
- 다른 풀이 : MAX, CONCAT의 순서 변경
SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH FROM FISH_INFO;
이렇게 MAX, CONCAT의 순서를 바꾸어도 무방하게 작동된다!
- MAX(컬럼명) : 해당 컬럼에서 최대값 추출
- MIN(컬럼명) : 해당 컬럼에서 최소값 추출
💡 SELECT문에서 사용!
- CONCAT(문자열1, 문자열2...)
- 둘 이상의 문자열을 입력한 순서대로 합쳐서 반환
- 문자열에 ""를 넣게되면 띄어쓰기로 합쳐짐!
- NULL이 문자열에 있는 경우 NULL은 무시하지 않되 NULL 결과를 반환하지 않음
CONCAT('Value: ', NULL, ' Test'); -- 'Value: Test'
- CONCAT_WS(구분자, 문자열1, 문자열2...)
- 여러 값 결합, 각 결합 값 사이에 구분자를 포함하여 반환
- NULL값이 있는 경우 무시
CONCAT_WS('-', 'Name', NULL, 'Age'); -- 'Name-Age'
🌟CONCAT 사용 시 암시적 형변환이 이루어진다!
- 형변환 : 두 개의 데이터간 데이터 타입이 일치하도록 변환하는 것
- 명시적 형변환 : 형변환 함수를 사용하여 데이터 타입을 일치시킴
- TO_NUMBER, TO_DATE, TO_CHAR 등으로 개발자가 SQL에서 형변환 함수를 사용하여 형변환 이루어짐
- 암시적 형변환 : 개발자가 형변환을 하지 않은 경우 데이터베이스에서 자동으로 형변환하는 것
- 문자열과 숫자열의 결합 시 문자열로 변환, 숫자와 실수의 결합 시 실수로 변환 등이 해당
- 변환은 데이터 손실이 적은 방향으로 변환됨!(정수는 실수로, 실수는 문자열로 변환)
왜 문제에서 FLOAT+ 문자열이 CONCAT으로 가능한지 의문이었는데 이런 이유로 가능했구나를 알게됨!! 문자+숫자라고 안된다 하지말고 일단 합해보자!