A-1.  한 걸음 더 나아가고자 하는 코드

SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC

- 기존에 자주 사용하던 LIKE 를 사용하지 않고 해당 문자열을 포함하는 데이터만 추출하고자 한다.

 

A-2. 한 걸음 더 나아간 코드

SELECT *
FROM CAR_RENTAL_COMPANY_CAR cr
WHERE INSTR(OPTIONS,'네비게이션') > 0
ORDER BY CAR_ID DESC

▶ INSTR('기준문자열' , '찾고자 하는 문자열')

▷ 기준 문자열에서 찾고자 하는 문자열이 있을 경우 존재하는 문자열의 위치값을 알려준다.

 - OPTIONS 문자열에서 '네비게이션'을 포함하는 데이터를 추출하고자 한다.

- INSTR 사용 시 '네비게이션'이 문자열에 있다면 위치값을 표시함으로 0보다 큰 값 추출된다.

- SQL의 경우 첫 번째 문자열의 위치값 = 1

 

B-1. 한 걸음 더 나아가고자 하는 코드

SELECT U.USER_ID
     , U.NICKNAME
     , CONCAT(U.CITY,' ' , U.STREET_ADDRESS1,' ',U.STREET_ADDRESS2) '전체주소'
     , CONCAT(SUBSTRING(U.TLNO,1,3), '-', SUBSTRING(U.TLNO,4,4),'-',SUBSTRING(U.TLNO,8,4)) '전화번호'
FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(U.USER_ID)>=3
ORDER BY USER_ID DESC

- 전화번호의 형식을 다음과 같이 변경하고자 한다.

- '01012341234' → '010-1234-1234'

- 기존 SUBSTRING을 사용하여 기준위치부터 원하는 길이만큼 잘라 하이폰(-)과 함께  CONCAT 으로 이어붙였다.

 

B-2. 한 걸음 더 나아간 코드

SELECT U.USER_ID
      ,U.NICKNAME
      ,CONCAT_WS(' ', U.CITY, U.STREET_ADDRESS1, 
                              U.STREET_ADDRESS2) AS 전체주소 
      ,CONCAT_WS('-', SUBSTRING(U.TLNO, 1,3), 
                      SUBSTRING(U.TLNO, 4,4), 
                      SUBSTRING(U.TLNO, 8,4)) AS 전화번호
FROM USED_GOODS_BOARD B INNER JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY U.USER_ID
HAVING COUNT(U.USER_ID)>=3
ORDER BY USER_ID DESC

▶ CONCAT_WS ('구분자' , '문자열1', '문자열2')

▷ 구분자를 사용하여 문자열을 연결할 때 사용되는 함수

- 구분자는 결과 문자열의 각 구성 요소 사이에 삽입된다.

- 문자열 개수는 필요한 만큼 늘릴 수 있다.

- 구분자를 사용하여 문자열을 나누고 연결할 때 주로 사용한다.

- CONCAT과의 차이점

  * 구분자를 사용하지 않고 문자열을 단순히 연결한다.

  * 구분자를 사용하고자 한다면, 문자열 사이에 구분자를 일일이 작성하여야 한다.

- 구분자 사용여부에 따라 선택하여 문자열을 연결하면 된다.

+ Recent posts