반응형
REGEXP_REplace with MySQL 또는 MariaDB가 와일드카드 일치를 사용하여 빈 문자열을 바꾸지 않음
(MySQL/MariaDB에서 테스트됨):
이로 인해 빈 문자열이 생성되는 이유는 무엇입니까?
SELECT REGEXP_REPLACE('', '.*', 'hello');
이것도 마찬가지입니다.
SELECT REGEXP_REPLACE('', '(.*)', '\\1 hello');
반면에, 같은 정규식을 가진 REGEXP를 빈 필드에 적용하면, 예를 들어 열과 일치합니다.
SELECT uid,f1 FROM table1 WHERE f1 REGEXP '.*' and uid=1;
+-----+-----+
| uid | f1 |
+-----+-----+
| 1 | |
+-----+-----+
일치한다면, 그것도 교체되어야 한다고 생각합니다.다른 정규 표현식 엔진은 다음과 같이 작동합니다.
echo "" | perl -p -e "s/.*/hello/"
hello
에 테스트된.
- MySQL 8.0.26
- MariaDB 10.4.19
REGEXP_REPLACE와 함께 작업하던 중 이 사실을 알게 되었습니다.예제가 단순화되었습니다.
언급URL : https://stackoverflow.com/questions/68682251/regexp-replace-with-mysql-or-mariadb-does-not-replace-empty-string-using-a-wildc
반응형
'programing' 카테고리의 다른 글
Spring Boot용 외부 라이브러리 폴더 (0) | 2023.09.03 |
---|---|
JSF 2 - 복합 구성 요소 인터페이스에 Ajax 수신기 메서드를 추가하려면 어떻게 해야 합니까? (0) | 2023.09.03 |
Swift에서 어레이의 모든 멤버를 동일한 값으로 초기화하는 방법은 무엇입니까? (0) | 2023.09.03 |
로그아웃 시 활동 기록 스택을 삭제하여 "뒤로" 단추가 로그인한 활동만 열 수 없도록 합니다. (0) | 2023.09.03 |
sql 읽기 전용 모드에서 연결 열기 (0) | 2023.08.29 |