Mam pole tekstowe do akceptowania wyrażeń regularnych z interfejsu użytkownika. W przypadku tych wyrażeń regularnych mam funkcję wyszukiwania i chcę przeprowadzić wyszukiwanie. Używam przygotowanych instrukcji, a DB to mysql. Kiedy wykonuję wyszukiwanie na "%", chcę tylko wyszukować wyrażenie regularne zaczynające się od "%". Ale ponieważ '%' jest znakiem wieloznacznym w mysql, otrzymuję całe wyrażenie regularne w wyszukiwaniu. Jak uciec z tego.Jak uniknąć specjalnych znaków SQL w wyrażeniach regularnych w Mysql
6
A
Odpowiedz
8
Wystarczy użyć backslash przed postaci, jak pokazano na :
\0 An ASCII NUL (0x00) character.
\' A single quote ("'") character.
\" A double quote (""") character.
\b A backspace character.
\n A newline (linefeed) character.
\r A carriage return character.
\t A tab character.
\Z ASCII 26 (Control+Z). See note following the table.
\\ A backslash ("\") character.
\% A "%" character. See note following the table.
\_ A "_" character. See note following the table.
nocie (od dokumentacji MySQL):
Jeśli używasz "\%" lub „\ _ "Poza kontekstami dopasowywania wzorca, oceniają one ciągi" \% "i" \ _ ", a nie"% "i" _ ".
1
Jeśli używasz PHP, można uciec%, _ i znaków przy użyciu tego kodu:
$escaped = addcslashes($str, "%_");
katalogu \ (backslash) i cytuje cię oczywiście również musi uciekać (jak zawsze Aby zapobiec! SQL injection), np przez mysql_real_escape_string()
.
Powiązane problemy
- 1. Wywoływanie znaków specjalnych w wyrażeniach regularnych Java
- 2. Jak mogę uniknąć znaków specjalnych w MySQL?
- 3. Opieka w wyrażeniach regularnych
- 4. C# String zastępcze format w wyrażeniach regularnych
- 5. W tym komentarze w wyrażeniach regularnych Java
- 6. Operator tyldy w wyrażeniach regularnych
- 7. Clojure: Jak używać zmiennych w wyrażeniach regularnych?
- 8. Jak używać zmiennych awk w wyrażeniach regularnych?
- 9. Jak mogę uniknąć specjalnych znaków HTML w JSP?
- 10. Qt Tureckie znaki w wyrażeniach regularnych
- 11. Ukośniki w wyrażeniach regularnych w języku Python
- 12. PL/SQL konwertowanie znaków specjalnych
- 13. Jak mogę uniknąć znaków specjalnych LaTeX wewnątrz szablonów Django?
- 14. Jak uniknąć specjalnych znaków w ciągu I interpolować do wyrażenia Perla?
- 15. Jak mogę uniknąć specjalnych symboli w łańcuchu scala?
- 16. Jak uniknąć dwukropków i innych znaków specjalnych w ciągu znaków YAML?
- 17. usunięcia znaków specjalnych w NSString
- 18. Sprawdzanie znaków specjalnych w ciągu znaków
- 19. Szukasz znaków specjalnych w Google
- 20. Wyszukiwanie wyrażeń regularnych Mysql bez powtarzania znaków
- 21. Wywoływanie znaków specjalnych w cmd
- 22. Jak uzyskać przechwytywanie funkcjonalności grupy w wyrażeniach regularnych Golang?
- 23. Jak zagnieżdżone przechwytywanie grup ponumerowane w wyrażeniach regularnych?
- 24. Wywoływanie znaków specjalnych w to_tsquery
- 25. Jak uciec od znaków specjalnych w JasperReports?
- 26. Jak uciec od znaków specjalnych w regex?
- 27. Dlaczego `\ d` nie działa w wyrażeniach regularnych w sed?
- 28. PL/SQL, jak uniknąć pojedynczego cudzysłowu w ciągu znaków?
- 29. Dopasowywanie godzin/minut/sekund w wyrażeniach regularnych - lepszy sposób?
- 30. Sortowanie alfabetyczne znaków specjalnych alfabetycznie
Chcę nawet uciec od innych symboli wieloznacznych mysql takich jak "_". – Daemonthread
mówisz o wyrażeniach regularnych lub operatorze LIKE? Ponieważ% nie jest znakiem specjalnym w wyrażeniach regularnych. Zmień swoje pytanie, aby było bardziej zrozumiałe. I/lub zapisz warunki SQL, które chcesz użyć jako przykład. – TMS
Przechowuję wyrażenia regularne w bazie danych. I używam operatora LIKE w SQL do wyszukiwania wyrażenia regularnego. Sample sql: "Wybierz wyrażenie z REGEX, gdzie wyrażenie LIKE"% ";". Chcę użyć% w sql jako normalny znak. – Daemonthread