MySQL
정규 표현식
수색…
소개
정규 표현식은 복잡한 검색을위한 패턴을 지정하는 강력한 방법입니다.
REGEXP / RLIKE
REGEXP
(또는 동의어, RLIKE
) 연산자는 정규 표현식을 기반으로 패턴 일치를 허용합니다.
다음 employee
테이블을 고려하십시오.
+-------------+-------------+-------------+--------------+----------+
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | PHONE_NUMBER | SALARY |
+-------------+-------------+-------------+--------------+----------+
| 100 | Steven | King | 515.123.4567 | 24000.00 |
| 101 | Neena | Kochhar | 515.123.4568 | 17000.00 |
| 102 | Lex | De Haan | 515.123.4569 | 17000.00 |
| 103 | Alexander | Hunold | 590.423.4567 | 9000.00 |
| 104 | Bruce | Ernst | 590.423.4568 | 6000.00 |
| 105 | David | Austin | 590.423.4569 | 4800.00 |
| 106 | Valli | Pataballa | 590.423.4560 | 4800.00 |
| 107 | Diana | Lorentz | 590.423.5567 | 4200.00 |
| 108 | Nancy | Greenberg | 515.124.4569 | 12000.00 |
| 109 | Daniel | Faviet | 515.124.4169 | 9000.00 |
| 110 | John | Chen | 515.124.4269 | 8200.00 |
+-------------+-------------+-------------+--------------+----------+
패턴 ^
FIRST_NAME
이 (가) N으로 시작하는 모든 직원을 선택하십시오.
질문
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^N'
-- Pattern start with----------------------------^
패턴 $ **
PHONE_NUMBER
이 4569로 끝나는 모든 직원을 선택하십시오.
질문
SELECT * FROM employees WHERE PHONE_NUMBER REGEXP '4569$'
-- Pattern end with----------------------------------^
NOT REGEXP
FIRST_NAME
이 ( 가) N으로 시작 하지 않는 직원을 모두 선택하십시오.
질문
SELECT * FROM employees WHERE FIRST_NAME NOT REGEXP '^N'
-- Pattern does not start with---------------^
정규식 포함
그의 모든 직원 선택 LAST_NAME
에 포함하고 그 FIRST_NAME
포함 a
.
질문
SELECT * FROM employees WHERE FIRST_NAME REGEXP 'a' AND LAST_NAME REGEXP 'in'
-- No ^ or $, pattern can be anywhere -------------------------------------^
[] 사이의 문자
FIRST_NAME
이 (가) A 또는 B 또는 C로 시작하는 모든 직원을 선택하십시오.
질문
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^[ABC]'
-------------------------------------------------^^---^
패턴 또는 |
FIRST_NAME
이 (가) A 또는 B 또는 C 로 시작하고 r , e 또는 i로 끝나는 모든 직원을 선택하십시오.
질문
SELECT * FROM employees WHERE FIRST_NAME REGEXP '^[ABC]|[rei]$'
-- ----------------------------------------------^^---^^^---^^
정규식 일치 계산
다음 쿼리를 고려하십시오.
SELECT FIRST_NAME, FIRST_NAME REGEXP '^N' as matching FROM employees
FIRST_NAME REGEXP '^N'
은 FIRST_NAME
가) ^N
과 일치한다는 사실에 따라 1 또는 0 입니다.
더 잘 시각화하려면 :
SELECT
FIRST_NAME,
IF(FIRST_NAME REGEXP '^N', 'matches ^N', 'does not match ^N') as matching
FROM employees
마지막으로 다음을 사용하여 일치하는 행과 일치하지 않는 행의 총 수를 계산합니다.
SELECT
IF(FIRST_NAME REGEXP '^N', 'matches ^N', 'does not match ^N') as matching,
COUNT(*)
FROM employees
GROUP BY matching
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow