본문 바로가기
MySql

MySQL PHP의 preg_replace에 해당하는 MySQL이 있습니까?

by 베이스 공부 2020. 12. 30.
반응형

정규식을 사용할 수 있다고 생각하는 MySQL의 필드와 일치해야하지만 MySQL에는 작업을 수행하는 데 필요한 기능이없는 것 같습니다. 시나리오는 다음과 같습니다.

PHP에 $ url이라는 변수가 있습니다. 이 변수가 "/ article / my-article / page / 2"문자열로 설정되어 있다고 가정 해 보겠습니다. 또한 콘텐츠를 가져오고 싶은 MySQL에 URL 테이블이 있습니다. 그러나 내 테이블에 저장된 URL에는 와일드 카드가 포함됩니다.

이전에는 테이블에 저장된 값이 "/ article / % / page / %"와 같이 보이도록 설정했습니다.

해당 구성으로 다음을 실행할 수 있습니다.

SELECT * FROM urls WHERE '$url' LIKE url

그리고 이것은 원하는 기능과 일치합니다.

지금하고 싶은 것은 "/ article / % / page / %"대신 MySQL 데이터가 "/ article / {{slug}} / page / {{가 될 수 있도록 고급 와일드 카드를 허용하는 것입니다. page_no}} ".

동일한 $ url 입력을 사용하여이 데이터와 일치하는 SQL 쿼리를 만들고 싶습니다. LIKE는 더 이상 올바른 비교가 아닙니다. 기본 제공 "%"와일드 카드가 아니라 {{. *}}를 사용하기 때문입니다. 이것을 수행하는 방법에 대한 아이디어가 있습니까?

 

해결 방법

 

해결책을 찾았습니다. 이상적이지는 않지만 순수한 SQL 솔루션이 나타나지 않을 경우를 대비하여 여기에 넣겠습니다. MySQL의 url 필드를 "/ articles / % / page / %"와 동일하게두고 사용할 변수 이름 목록을 저장하는 변수라는 다른 필드를 추가 할 수 있습니다. 이렇게하면 원래 쿼리를 사용한 다음 데이터를 검색 한 후 반환 값의 "%"문자를 PHP의 "{{variable}}"로 sprintf로 바꿀 수 있습니다.

그래도 개념이 가치 있다고 생각하기 때문에 가능하면 SQL로 해결되는 것을보고 싶습니다.

 

참조 페이지 https://stackoverflow.com/questions/1705437

 

 

반응형

댓글