메모장

05-1 문자열 함수 본문

DB/[SQL 입문]

05-1 문자열 함수

Itchild 2024. 4. 11. 13:02
728x90
반응형

 

  • 문자열과 문자열 연결하기: CONCAT 함수
CONCAT 함수로 문자열을 연결하는 방법 
SELECT CONCAT ('I', 'Love', 'SQL')

I와 SQL 사이에 LOVE 가 들어가게 연결 한다.
 

  • 문자열과 숫자 또는 날짜 연결하기 : CAST, CONVERT 함수

숫자나 날짜 등의 값을 문자열로 변환해 연결하려면 어떻게 해야 할까 ? 그럴때 CAST,CONVERT를 쓴다.

SELECT ipo_year + open_price FROM nasdaq_company
WHERE symbol = 'MSFT'    ------> 오류

CAST 함수 사용방법 !!
CAST(expression AS datatype(length))

------ 정답 ------
SELECT 
 CAST(ipo_year AS nvarchar(50)) + ' ' + CAST(open_price AS nvarchar(50))
FROM nasdaq_company WHERE symbol = 'MSFT'


CONVERT 함수 사용방법 !!
CONVERT (data_type [(length)], expression [, style])

------ 숫자형식을 문자형식으로 변환해 문자열을 연결 ------
SELECT 
 CONVERT(ipo_year AS nvarchar(50)) + ' ' + CONVERT(open_price AS nvarchar(50))
FROM nasdaq_company WHERE symbol = 'MSFT'

-- 숫자형을 문자열로 변환 하되 문자열 크기를 작게 지정하면 산술오버플로 오류가 발생한다. 
만약 숫자에서 앞의 5자리를 문자열로 반환받고 싶다면 숫자 앞뒤로  ' '를 추가해 
문자열로 인식시킨다음 5자리를 잘라내야 한다. 
 

  • NULL 과 문자열 연결하기 : ISNULL, COALESCE 함수

만약 문자열과 연결하려는 값이 NULL이면 결과는 NULL로 반환 된다. 그래서 테이블에 NULL이 있다면 문자열 또는 숫자로 자료형을 변환 해야 한다. NULL은 ISNULL 함수 나 COALESCE함수로 자료형을 변환한다.

 

1) ISNULL : 인자로 (열 이름, 대체할 값) 과 같이 전달 하면 해당 열 이름의 NULL을 대체할 값으로 변환

2) COALESCE : (열 이름1, 열이름2,... )와 같이 여러 열 이름을 인자로 전달한다.

ISNULL 함수의 형변환 기본 형식 
ISNULL (check_expression, replacement_value)

ISNULL 사용방법 !!
SELECT symbol, isnull(sector, ' '), open_price FROM nasdaq_company
WHERE symbol = 'DBA'  -----> sector를 공백으로 바꿔주세요 

SELECT symbol, isnull(sector, industry), industry, open_price FROM nasdaq_company
WHERE symbol = 'DBA' -----> sector를 industry로 바꿔주세요 . 
                            industry가 null이면 sector자리도 null이다. 

--------------------------------------------

COALESCE  사용방법 !!
SELECT symbol, coalesce(sector, industry, open_price), industry, open_price
FROM nasdaq_company WHERE symbol = 'DBA' 쉼표로 구분한 N개의 인자를 순차 대입 
                              -> sector값이 null 이면 다음 industry가 null 이면 다음 open_price
 

  • 문자열을 소문자나 대문자로 변경하기 : LOWER, UPPER 함수
SELECT 'Do it! SQL', LOWER('Do it! SQL'), UPPER('Do it! SQL')
LOWER 는 소문자로 do it! sql 
UPPER 는 대문자로 DO IT! SQL
 

  • 문자열 공백 제거 하기 : LTRIM, RTRIM, TRIM 함수

LTRIM 은 왼쪽 공백 제거

RTRIM 은 오른쪽 공백 제거

TRIM 은 양쪽 공백 제거


  • 문자열 길이 반환하기 : LEN 함수

LEN 함수는 문자열의 문자개수를 반환 ,특징은 문자 개수를 셀때 앞의 공백은 포함하지만,뒤의 공백은 포함X

SELECT LEN(' Do it! SQL') ---> 공백까지 14개

 

  • 특정문자 까지 문자열 길이 반환하기 : CHARINDEX 함수

지정한 특수문자 까지의 길이를 반환한다.

SELECT 'Do it!! SQL', CHARINDEX('!', 'Do it!! SQL') --> ! 까지의 문자열 길이 6


  • 지정한 길이만큼 문자열 반환하기 : LEFT, RIGHT 함수
SELECT 'Do it! SQL', 
LEFT('Do it! SQL',2), ---> 왼쪽 에서 2개 Do
RIGHT('Do it! SQL',2) ---> 오른쪽에서 2개 QL
 

  • 지정한 범위의 문자열 반환하기 : SUBSTRING
지정한 범위의 문자열 반환하는 방법 
SUBSTRING (expression, start, length)

SELECT 'Do it! SQL', SUBSTRING('Do it! SQL',4,2) -->4번째 문자 부터 2개 ( it )

-----------------------------------------------

SUBSTRING 함수는 CHARINDEX 함수를 조합해 사용하는 경우가 많다.
SELECT SUBSTRING('email@email.com', 1, CHARINDEX('@', 'email@email.com' -1)
                                 처음시작부터   '@'가 들어가는문장 바로 앞까지 문자열 검색
 

  • 특정문자를 다른 문자로 변경하기 : REPLACE 함수
REPLACE 함수는 첫번째 인자는 열 또는 문자를 입력하고 , 두번째 인자는 변경하려는 문자열, 
세번째 인자는 변경 문자열을 입력한다.

REPLACE (string_expression, string_pattern, string_replacement)
          열 또는 문자         이것을           이것으로 변경
REPLACE (symbol, 'A' , 'C') symbol열 의 A 를 C로 바꿔줘 
 

  • 문자 반복하기 : REPLICATE 함수
REPLICATE (string_expression, integer_expression)
             이것을               이만큼 반복할게요
REPLICATE ('0', 10) ---> 0을 10번 반복할게요

REPLACE(symbol, 'A', REPLICATE('C',10)) --> symbol 열의 A를 C가 10번 반복된 것으로 바꿔줘 
 
  • 공백 문자 반복하기 : SPACE 함수

SELECT symbol + SPACE(10) + company_name FROM nasdaq_company -->공백문자 10개 넣어줘

 

  • 문자열 역순으로 표시하기 : REVERSE 함수
SELECT 'Do it! SQL', REVERSE('Do it! SQL') ---> LQS !ti oD
 
  • 지정한 범위의 문자열 삭제하고 새 문자열 끼워 넣기 : STUFF함수
SELECT STUFF('Do it! XX SQL Server', 8, 2, N'마이크로소프트')
           XX -> Do it! 마이크로소프트 SQL Server
 
  • 숫자를 문자열로 변환하기 : STR 함수

STR 함수만의 특징은 2번째 인자로 전달하는 변환 길잇값이 변경할 문자열 길이보다 짧은 경우 오른쪽 맞춤으로 정렬한다는 것 , 3번째 인자로 전달하는 소수 부분 길이에 맞게 반올림해 표현 한다는 것

SELECT STR(123.45, 6 , 1); --> 123.5
 

만약 변환 길잇값이 변경할 문자열 길이보다 짧으면 변환 길잇값 만큼 * 문자를 반환한다. 다음 쿼리의 경우 변환 길이값은 2이고 변경할 문자열의 길이가 5 이므로 ** 를 반환했다.

SELECT STR(123.45, 2 , 2); --> ** 
 

 

 

728x90
반응형

'DB > [SQL 입문]' 카테고리의 다른 글

05-3 집계함수  (0) 2024.04.11
05-2 날짜 함수  (0) 2024.04.11
04-3 공통 테이블 식  (0) 2024.04.11
04-2 서브쿼리  (0) 2024.04.11
04-1 조인  (0) 2024.04.11