OkBublewrap

SQL 문자열 다루기 본문

개발/SQL

SQL 문자열 다루기

옥뽁뽁 2025. 3. 4. 12:07

1. 문자열 연결( CONCAT )

SELECT CONCAT('Hello', ' ', 'World') AS greeting;
-- 결과: Hello World

SELECT 'Hello' || ' ' || 'World' AS greeting;
-- 결과: Hello World

 

2. 문자열 길이( LENGTH )

SELECT LENGTH('Hello World') AS length;
-- 결과: 11

SELECT CHAR_LENGTH('Hello') AS length;
-- 결과: 5

 

3. 문자열 자르기( SUBSTRING )

-- SUBSTRING: 문자열의 일부를 반환
SELECT SUBSTRING('Hello World', 1, 5) AS sub_string;
-- 결과: Hello

-- LEFT/RIGHT: 문자열 왼쪽, 오른쪽에서 지정된 길이만큼 자르기
SELECT LEFT('Hello World', 5) AS left_string;
-- 결과: Hello

SELECT RIGHT('Hello World', 5) AS right_string;
-- 결과: World

 

4. 문자열 대체( REPLACE )

SELECT REPLACE('Hello World', 'World', 'SQL') AS replaced_string;
-- 결과: Hello SQL

 

5. 문자열 찾기( FIND OR POSITION)

SELECT POSITION('World' IN 'Hello World') AS position;
-- 결과: 7

SELECT INSTR('Hello World', 'World') AS position;
-- 결과: 7

 

6. 대소문자 변환(UPPER, LOWER)

SELECT UPPER('hello') AS uppercase;
-- 결과: HELLO

SELECT LOWER('HELLO') AS lowercase;
-- 결과: hello

 

7. 공백 제거

-- TRIM: 문자열 양쪽의 공백을 제거
SELECT TRIM(' ' FROM '   Hello World   ') AS trimmed_string;
-- 결과: Hello World

-- LTRIM: 왼쪽 공백을 제거
SELECT LTRIM('   Hello World') AS ltrimmed_string;
-- 결과: Hello World

-- RTRIM: 오른쪽 공백을 제거
SELECT RTRIM('Hello World   ') AS rtrimmed_string;
-- 결과: Hello World

 

8. 정규식

-- LIKE: 문자열 패턴을 비교
SELECT * FROM users WHERE name LIKE 'A%';
-- 결과: 'A'로 시작하는 이름을 가진 모든 사용자 반환

-- REGEXP: 정규식을 사용한 패턴 매칭
SELECT * FROM users WHERE name REGEXP '^[A-Za-z]+$';
-- 결과: 알파벳만 포함된 이름을 가진 사용자 반환

 

LIKE

1. 와일드카드

%: 0개 이상의 문자와 일치

_: 정확히 하나의 문자와 일치

 

2. 이스케이프

따라서, 실제 문자로 %나 _를 검색하려면,

이스케이프(Escape) 문법을 사용하여 해당 문자가 와일드카드로 해석되지 않도록 해야 한다.

SELECT * FROM products WHERE product_name LIKE '%\%%' ESCAPE '\';
-- '%%'가 포함된 이름을 정확히 찾을 때 사용

SELECT * FROM users WHERE email LIKE '%\_domain%' ESCAPE '\';
-- '_domain'을 포함한 이메일을 찾을 때 사용

 

 

'개발 > SQL' 카테고리의 다른 글

Data Science Skills  (0) 2025.03.08
Histogram of Tweets  (0) 2025.03.08
585. Investments in 2016  (0) 2025.02.13
196. Delete Duplicate Emails  (0) 2025.02.12
176. Second Highest Salary  (0) 2025.02.11