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

Jak napisać zapytanie MySQL, w którym A zawiera ( a lub b )

Dwie opcje:

  1. Użyj LIKE słowo kluczowe wraz ze znakami procentu w ciągu

    select * from table where field like '%a%' or field like '%b%'.
    

    (uwaga:jeśli wyszukiwany ciąg zawiera znaki procentu, musisz je zmienić)

  2. Jeśli szukasz bardziej złożonej kombinacji ciągów niż podałeś w przykładzie, możesz użyć wyrażeń regularnych (regex):

    Zobacz instrukcję MySQL, aby dowiedzieć się, jak z nich korzystać:http:// /dev.mysql.com/doc/refman/5.1/en/regexp.html

Spośród nich, używając LIKE jest najczęstszym rozwiązaniem — jest to standardowy SQL i powszechnie używany. Regex jest rzadziej używany, ale znacznie potężniejszy.

Pamiętaj, że niezależnie od wybranej opcji musisz mieć świadomość możliwych skutków dla wydajności. Wyszukiwanie takich podciągów oznacza, że ​​zapytanie będzie musiało przeskanować całą tabelę. Jeśli masz dużą tabelę, może to spowodować bardzo powolne zapytanie i żadne indeksowanie nie pomoże.

Jeśli jest to dla ciebie problem i będziesz musiał szukać tych samych rzeczy w kółko, możesz zrobić coś takiego jak dodanie pola flagi do tabeli, która określa, że ​​pole tekstowe zawiera odpowiedni pod- smyczki. Jeśli zachowasz aktualność tego pola flagi podczas wstawiania lub aktualizowania rekordu, możesz po prostu zapytać o flagę, gdy chcesz wyszukiwać. Można to zindeksować, co znacznie przyspieszy zapytanie. To, czy warto to zrobić, zależy od Ciebie, będzie to zależeć od tego, jak słaba wydajność jest przy użyciu LIKE .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw zbiorczy MySQL przez PHP

  2. Najszybszy sposób na wstawienie obiektu, jeśli nie istnieje z SQLAlchemy

  3. Parametry wiązania dla klauzuli WHERE IN z PDO

  4. Znajdź datę i godzinę najbliższą podanej w zapytaniu mysql

  5. PHP/MySQL — zawiera liczbę mnogą, ale wyklucza liczbę pojedynczą