수색…


소개

정규 표현식은 복잡한 검색을위한 패턴을 지정하는 강력한 방법입니다.

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_NUMBER4569로 끝나는 모든 직원을 선택하십시오.

질문

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