조건에 맞는 사용자 정보 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/164670
- 문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 작성자가 최소 3번 이상 게시물을 작성한 사용자만을 선택하는 서브쿼리와 "USED_GOODS_USER" 테이블을 조인
SELECT USER_ID,
NICKNAME,
CITY ||' '|| STREET_ADDRESS1 ||' '|| STREET_ADDRESS2 AS "전체주소",
SUBSTR(TLNO, 0, 3) ||'-'|| SUBSTR(TLNO, 4, 4) ||'-'|| SUBSTR(TLNO, 8, 4) AS "전화번호"
FROM USED_GOODS_USER U
JOIN (
SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*) >= 3) B
ON U.USER_ID = B.WRITER_ID
ORDER BY USER_ID DESC;
1
2
3
4
5
6
7
8
9
10
11
12
SELECT U.USER_ID,
U.NICKNAME,
U.CITY || ' ' || U.STREET_ADDRESS1 || ' ' || U.STREET_ADDRESS2 AS "전체주소",
SUBSTR(U.TLNO, 1, 3) || '-' || SUBSTR(U.TLNO, 4, 4) || '-' || SUBSTR(U.TLNO, 8, 4) AS "전화번호"
FROM (
SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*) >= 3) B
JOIN USED_GOODS_USER U
ON B.WRITER_ID = U.USER_ID
ORDER BY U.USER_ID DESC;
SUBSTR 함수는 데이터베이스에서 문자열을 조작하는 데 사용되는 함수 중 하나로, 주어진 문자열에서 특정 위치에서 시작하여 지정된 길이만큼의 문자열을 추출한다. 오라클에서의
SUBSTR
함수는 다음과 같은 형식을 가진다.1
SUBSTR(char, position, substring_length)
char
: 추출할 문자열이나 열이다.position
: 추출을 시작할 위치를 나타내는 매개변수로, 문자열의 첫 번째 문자가 1부터 시작한다.substring_length
(선택 사항): 추출하고자 하는 문자열의 길이를 나타내는 매개변수이다. 이 값을 생략하면start
위치부터 문자열 끝까지 추출된다.SUBSTR('Hello, World!', 1, 5)
는 문자열의 첫 다섯 문자인 “Hello”를 반환한다.SUBSTR('Hello, World!', 7)
는 문자열의 7번 위치부터 끝까지 추출하여 “World!”를 반환한다.SUBSTR('Hello, World!', -6)
은 문자열의 마지막 6개 문자를 추출하여 “World!”를 반환한다.
예를 들어, ‘ABCDEFG’ 문자열에서 중간에 있는 ‘CD’ 부분을 추출하고 싶을 경우:
1
SELECT SUBSTR('ABCDEFG', 3, 2) FROM dual;
- 이 쿼리는 ‘ABCDEFG’ 문자열에서 3번째 위치부터 시작하여 2자리를 추출하므로 ‘CD’를 반환한다.
dual
은 오라클에서 단일 행과 단일 열을 갖는 가상의 테이블로, 단순한 쿼리 테스트에 사용된다. - 즉,
SUBSTR
함수는 문자열을 자르거나 추출할 때 활용되며,position
과substring_length
매개변수를 조절하여 필요한 부분을 정확하게 추출할 수 있다.
- 이 쿼리는 ‘ABCDEFG’ 문자열에서 3번째 위치부터 시작하여 2자리를 추출하므로 ‘CD’를 반환한다.
- 자바에서의 문자열 연결은
+
연산자를 사용하지만, SQL에서는 문자열을 연결할 때||
연산자를 사용한다. SQL에서+
를 사용하는 경우는 주로 숫자와 문자열을 함께 사용할 때이다. 하지만 문자열 간의 연결에는||
를 사용해야 한다.
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.