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

Jak mogę wyszukać frazę Like O'% w MySql?

Wstrzykiwałeś dosłowny odwrotny ukośnik. To wystarczy:

SELECT person_sname
FROM people
WHERE person_sname = 'O\'Brien'

Aby przetestować:

SELECT 'O\\\'Brien', 'O\'Brien'

Aktualizacja: Jest już zaakceptowana odpowiedź, więc dodam tylko kilka wyjaśnień.

Po pierwsze przeoczyłem fakt, że przechowywane dane są uszkodzone. Nie trzeba dodawać, że to wyjaśnia, dlaczego person_sname = 'O\\\'Brien' to prawda.

Po drugie, \ znak ma dwa zastosowania w składni MySQL:

  1. To znak używany do tworzenia sekwencje ucieczki :\n , \t ...
  2. Jest to domyślny znak ucieczki do wstawiania dosłownego % i _ znaki w wyrażenia LIKE :foo LIKE '%abc\%def%'

Problem polega na tym, że wstawianie \ symbol w wyrażeniu LIKE wyzwala oba zachowania, więc tak naprawdę musisz wstawić cztery ukośniki odwrotne, aby uzyskać jeden :

person_sname like 'O\\\\\'Brien'

... chyba że zmienisz drugie znaczenie za pomocą ESCAPE klauzula:

person_sname like 'O\\\'Brien' escape '|'

Oczywiście, jeśli dane nie zostały uszkodzone, możesz po prostu:

person_sname = 'O\'Brien'
person_sname like 'O\'Brien'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Weryfikacja nie powiodła się dla zapytania dla metody JPQL

  2. BLOB vs. VARCHAR do przechowywania tablic w tabeli MySQL

  3. Co oznacza „unsigned” w MySQL i kiedy go używać?

  4. Jak przechowywać bardzo stare daty w bazie danych?

  5. Jak osiągnąć wartość domyślną, jeśli wartość kolumny to NULL?