•
LEFT, RIGHT 함수를 통해 문자열 인덱스까지의 원소를 확인할 수 있다.
dsfdsfdshfkjdsh1234, dsfdsfdshfkjdsh12 과 같은 문자열이 주어집니다.
•
REGEXP_REPLACE 함수를 사용하여 문자열의 마지막 부분에서 숫자를 제외한 모든 문자를 제거하고, 그 결과의 길이를 계산하여 뒤에 있는 숫자의 갯수를 구합니다.
SELECT LENGTH(REGEXP_REPLACE('dsfdsfdshfkjdsh1234', '[^0-9]*$','')) as count
FROM TABLE;
Python
복사
•
문자열 뒤에 숫자가 4개 이하일때 0으로 채워주는 쿼리
SELECT CONCAT('dsfdsfdshfkjdsh',
LPAD(
COALESCE(
REGEXP_REPLACE('dsfdsfdshfkjdsh12', '[^0-9]*$',''), '0000'), 4, '0'))
as new_string
FROM TABLE;
Python
복사
LPAD, RPAD : 특정 문자로 자릿수 채우기
LPAD는 왼쪽부터 특정 문자로 자릿수를 채우는 함수고 RPAD는 오른쪽부터 특정 문자로 자릿수를 채우는 함수입니다. 리포트나 프로그래밍에서 데이터 값의 자릿수를 맞추어야 할 때 유용합니다.
◦
예제) employees 테이블에서 first_name에 대해 12자리의 문자열 자리를 만들되 first_name의 데이터 값이 12자리보다 작으면 왼쪽에서부터 *를 채워서 출력하세요.
SELECT first_name, LPAD(first_name, 12, '*')
FROM employees;
Python
복사
SELECT CONCAT(
REGEXP_REPLACE('dsfdsfdshfkjdsh12', '[0-9]*',''),
LPAD(
COALESCE(
REGEXP_REPLACE('dsfdsfdshfkjdsh12', '[^0-9]*',''),
'0000'),
4, '0')
)
as new_string
FROM TABLE;
Python
복사
•
정규표현식
abc… Letters
123… Digits
\d Any Digit
\D Any Non-digit character
. Any Character
\. Period
[abc] Only a, b, or c
[^abc] Not a, b, nor c
[a-z] Characters a to z
[0-9] Numbers 0 to 9
\w Any Alphanumeric character
\W Any Non-alphanumeric character
{m} m Repetitions
{m,n} m to n Repetitions
* Zero or more repetitions
+ One or more repetitions
? Optional character
\s Any Whitespace
\S Any Non-whitespace character
^…$ Starts and ends
(…) Capture Group
(a(bc)) Capture Sub-group
(.*) Capture all
(abc|def) Matches abc or def
Python
복사
•
SQL 정규 표현식
SELECT DISTINCT city
FROM station
WHERE city REGEXP '^[aeiou]'
Python
복사