ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 문자열 연산
    Database 2021. 3. 8. 14:35
    728x90

    SQL에서의 문자열 연산

     

    데이터베이스 제품마다 SQL방언이 존재하며 각 데이터베이스 제품 별로 아래와 같은 연산자로 문자열을 결합 할 수 있다.

    + : SQL server

    || : Oracle, DB2, PostgreSQL

    CONCAT : MySQL


    1. CONCAT 함수

    문자열 결합은 2개의 열 데이터를 모아 1개의 열로 처리하고 싶은 경우 사용한다.

    이때 문자열형 데이터 뿐만이 아닌 수치형 데이터와의도 결합할 수 있다. 다만 결합한 결과는 문자열형 데이터가 된다는것만 기억하자

    SELECT CONCAT (name, price) FROM products;


    2. SUBSTRING 함수

    문자열 일부분을 계산하여 반환해주는 함수이다.

    SUBSTRING('20140125001', 1, 4) => '2014'
    
    SUBSTRING('20140125001', 5, 2) => '01'
    
    SELECT SUBSTRING (name, 3) FROM products;


    3. TRIM 함수

    문자열 앞뒤의 공백(스페이스)가 있을 경우 제거하는 함수이다. (문자열 도중에 존재하는 공백은 해당되지 않는다.)

    TRIM('ABC   ') => 'ABC'
    SELECT TRIM(name) FROM products;
    


    4. OCTET_LENGTH 함수, CHAR_LENGTH 함수

    MySQL에서 문자열의 길이를 가져올 때, 사용하는 것이  OCTEF_LENGTH함수입니다.

    하지만, LENGTH 함수는 문자의 Byte길이를 가져오기 때문에 한글은 정확한 길이를 알 수 없다.

    그래서 CHAR_LENGTH 함수를 사용한다.

    SELECT OCTET_LENGTH(name) FROM products;
    


    CHAR_LENGTH 함수는 문자의 Byte 수를 계산하지 않고 단순히 몇 개의 문자가 있는지를 가져오는 함수입니다.

    * CHAR_LENGTH는 CHARACTER_LENGTH와 동의어이다.

    SELECT CHAR_LENGTH(name) FROM products;


    위에서 길이를 구하는 함수의 결과가 다른것을 볼 수 있다!!

    이유 : 문자열 데이터의 길이는 문자세트에 따라 다르다!!

    또한, 한 문자가 몇 바이트인지는 쓰이는 문자세트에 따라 다르다!!

     

    컴퓨터 안에서는 이미지, 음성, 수치, 문자열 데이터등 다양한 종류의 데이터가 저장된다. 이러한 데이터를 통틀어 "수치"라고 언급한다.

    여기서는 문자열 데이터도 결국 수치로 저장된다는 것을 이해하자.

     

    문자세트와 문자 인코딩이라는 개념이 나오는데, 간단히 말하면

    데이터베이스에 어떤 문자세트를 사용하는냐에 따라 같은 문자수(길이) 여도 데이터베이스에서 차지하는 메모리(공간)이 다라짐을 뜻한다.

    문자 세트 문자 수  바이트 수
    EUC-KR 12 19
    UTF-8 12 26

    EUC-KR 에서 알파벳이나 기호, 숫자등의 아스키문자(ASCII)는 1바이트, 한글은 2바이트의 용량을 가지며

    UTF-8에서 아스키문자는 1바이트, 한글은 3바이트의 용량을 가진다.

     

    문자 세트란 여러 언어가 사용할 수 있는 문자 집합이다.

    문자 인코딩이란 문자세트를 컴퓨나 시스템에서 표현할 수 있도록 하는 방법이다.

     

    출처 : 

    SQL 첫걸음/ 아사이 아츠시 지음/ 한빛미디어

    miaow-miaow.tistory.com/37

    728x90

    'Database' 카테고리의 다른 글

    SQL CASE  (0) 2021.03.17
    SQL 날짜연산  (0) 2021.03.17
    SQL 연산  (0) 2021.03.02
    SQL 정렬  (0) 2021.02.22
    데이터베이스와 SQL 기초  (0) 2021.02.18
Designed by Tistory.