정규식을 사용할 수 있다고 생각하는 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
'MySql' 카테고리의 다른 글
MySQL의 일대 다 관계-모델을 구축하는 방법? (0) | 2020.12.31 |
---|---|
MySQL 데이터베이스에서 하나의 값 선택 (0) | 2020.12.31 |
MySQL 경고 : BINLOG_FORMAT = STATEMENT이므로 문 형식을 사용하여 바이너리 로그에 기록 된 안전하지 않은 문 (0) | 2020.12.30 |
MySQL Workbench 다크 테마 (0) | 2020.12.30 |
MySQL Database Structure for Web Messaging System (0) | 2020.12.30 |
댓글