programing

MySQL 쿼리에서 정규식을 수행하는 방법

nicescript 2022. 12. 29. 21:53
반응형

MySQL 쿼리에서 정규식을 수행하는 방법

문자열 문자로 시작하는 레코드와 그 뒤에 한 자리 숫자를 검색해야 하는 간단한 작업이 있습니다.내가 하려는 건 이거야

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')

그리고.

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')

단, 두 쿼리 모두 항상 A를 반환한다.null기록.

trecord
-------
null

다음 쿼리를 실행하는 경우

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')

그것은 되돌아온다

trecord
-------
ALA0000
ALA0001
ALA0002

즉, ALA로 시작하는 레코드와 그 뒤의 숫자를 가지고 있습니다.

편집

구체적으로는 PHP MySQL과 innodb 엔진을 사용하고 있습니다.

LIKE 대신 REGEXP를 사용해도 될 것 같아요.

SELECT trecord FROM `tbl` WHERE (trecord REGEXP '^ALA[0-9]')

내 경우(오라클)는WHERE REGEXP_LIKE(column, 'regex.*')를 참조해 주세요.

SQL 함수

묘사


REGEXP_LIKE

이 함수는 문자 열에서 패턴을 검색합니다.지정한 정규 표현과 일치하는 행을 반환하려면 쿼리의 WHERE 절에서 이 함수를 사용합니다.

...

REGEXP_치환

이 함수는 문자 열에서 패턴을 검색하고 해당 패턴이 발생할 때마다 지정한 패턴으로 바꿉니다.

...

REGEXP_INSTR

이 함수는 정규 표현 패턴의 특정 발생을 문자열로 검색합니다.검색할 항목과 검색할 시작 위치를 지정합니다.이 함수는 일치하는 문자열의 위치를 나타내는 정수를 반환합니다.

...

REGEXP_SUBstr

이 함수는 지정한 정규 표현 패턴과 일치하는 실제 하위 문자열을 반환합니다.

(물론 REGEXP_LIKE는 검색 문자열을 포함하는 쿼리만 일치시키므로 완전한 일치를 원할 경우 를 사용해야 합니다.'^$'처음에^( ) 및 종료)$)의 일치. 예: '^regex.*$'.)

언급URL : https://stackoverflow.com/questions/18780194/how-to-regex-in-a-mysql-query

반응형