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
'programing' 카테고리의 다른 글
vuex 저장소를 참조할 때 Vue.js 인스턴스 데이터가 누락됨 (0) | 2022.12.29 |
---|---|
컨트롤러에서 리다이렉트된 후 Larabel에 오류 메시지 표시 (0) | 2022.12.29 |
왜 이렇게 인쇄가 느리죠?더 빨리 할 수 있나요? (0) | 2022.12.29 |
PHP 클래스에 정의된 CONST를 가져올 수 있습니까? (0) | 2022.12.09 |
최종적으로 블록에 예외를 발생시킵니다. (0) | 2022.12.09 |