Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zachować ukośnik odwrotny podczas ucieczki od cudzysłowów w MySQL — QUOTE()

Używanie odwrotnego ukośnika do ucieczki pojedynczych cudzysłowów jest powszechnie stosowaną techniką, aby zapewnić, że pojedyncze cudzysłowy nie będą kolidować z obsługą pełnego ciągu znaków przez MySQL.

Pojedyncze cudzysłowy są używane do otaczania ciągu, więc pojedynczy cudzysłów w samym ciągu może spowodować spustoszenie, jeśli nie zostanie prawidłowo zmieniony. Po prostu wstawienie odwrotnego ukośnika bezpośrednio przed cudzysłowem zapewnia, że ​​MySQL nie zakończy przedwcześnie ciągu.

Jednak mogą zaistnieć sytuacje, w których chcesz, aby ukośnik odwrotny pozostał. Na przykład możesz chcieć użyć ciągu w wyrażeniu SQL i dlatego najpierw chcesz, aby był on odpowiednio zmieniony.

W tym miejscu QUOTE() funkcja wchodzi.

MySQL QUOTE() funkcja cytuje ciąg w celu uzyskania wyniku, który może być użyty jako wartość danych ze znakami zmiany znaczenia w instrukcji SQL. Ciąg jest zwracany ujęty w pojedyncze cudzysłowy i z każdym wystąpieniem ukośnika odwrotnego (\ ), pojedynczy cudzysłów (' ), ASCII NUL i Control+Z poprzedzone odwrotnym ukośnikiem.

Składnia funkcji QUOTE()

Oto jak działa składnia:

QUOTE(str)

Gdzie str jest (już) łańcuchem ze znakami ucieczki.

Przykład

Przykład prawdopodobnie wyjaśnia to lepiej niż moje wyjaśnienie:

SELECT QUOTE('Don\'t!') AS Result;

Wynik:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Na pierwszy rzut oka możesz pomyśleć „ale nic się nie stało – wynik jest dokładnie taki sam jak argument”. Jednak właśnie dlatego ta funkcja jest przydatna. Gdybyśmy nie użyli funkcji QUOTE() funkcja, oto co by się stało:

SELECT 'Don\'t!' AS Result;

Wynik:

+--------+
| Result |
+--------+
| Don't! |
+--------+

Używając QUOTE() funkcji, zachowujemy pojedyncze cudzysłowy i odwrotny ukośnik.

Oczywiście w wielu przypadkach jest to dokładnie to, czego chcesz. W wielu przypadkach ukośnik odwrotny i otaczające go cudzysłowy powinny zostać usuniętym. Ale mogą wystąpić sytuacje, w których chcesz dokładnie to, co QUOTE() funkcja robi za Ciebie.

Alternatywa

QUOTE() funkcja pozwala uniknąć robienia czegoś takiego:

SELECT '''Don\\\'t!''' AS Result;

Wynik:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Dzięki temu nie musimy używać trzech pojedynczych cudzysłowów dla każdego cudzysłowu i trzech odwrotnych ukośników dla każdego odwrotnego ukośnika.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ciąg wybranych wartości oddzielony przecinkami w mysql

  2. Jak stworzyć bezpieczną przygotowaną instrukcję mysql w php?

  3. Błąd wyszukiwania pełnotekstowego mysql

  4. Niedozwolona mieszanka zestawień (utf8_unicode_ci,IMPLICIT) i (utf8_general_ci,IMPLICIT) dla operacji '='

  5. Praca z wyzwalaczami w bazie danych MySQL — samouczek