Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie Fuzzy-Abfragen in PHP

So implementieren Sie Fuzzy-Abfragen in PHP

墨辰丷
墨辰丷Original
2018-06-01 11:50:572826Durchsuche

In diesem Artikel wird hauptsächlich die Methode zur Implementierung von Fuzzy-Abfragen in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Musterabfrage

1. SQL-Übereinstimmungsmuster

2. Muster für reguläre Ausdrücke (im Allgemeinen nicht empfohlen)

SQL-Matching-Modus

1 Wenn Sie den SQL-Matching-Modus verwenden, können Sie den Operator = oder nicht verwenden! =, verwenden Sie stattdessen den Operator LIKE oder NOT LIKE;

2. Im SQL-Matching-Modus stellt MYSQL zwei Arten von Platzhalterzeichen bereit.

% stellt eine beliebige Anzahl beliebiger Zeichen dar (einschließlich 0)

_ stellt ein beliebiges einzelnes Zeichen dar

3 Verwenden Sie den SQL-Matching-Modus, wenn das Matching-Format das oben Genannte nicht enthält Der Abfrageeffekt eines der beiden Platzhalterzeichen entspricht = oder! =

4. Verwenden Sie den SQL-Matching-Modus. Beim Matching wird die Groß-/Kleinschreibung nicht berücksichtigt

#查询用户名以某个字符开头的用户
#查询用户名以字符'l'开头的用户: l%
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名以某个字符结尾的用户
#查询用户名以字符'e'结尾的用户:e%
SELECT * FROM user WHERE username LIKE 'e%';
#查询用户名包含某个字符的用户
#查询用户名包含字符'o'的用户:%o%
SELECT * FROM user WHERE username LIKE '%o%';
#查询包含三个字符的用户
SELECT * FROM user WHERE username LIKE '___';
#查询用户名第二个字符为o的用户:_o%
SELECT * FROM user WHERE username LIKE '_o%';

Übereinstimmungsmuster für reguläre Ausdrücke

Platzhalter (regulärer Ausdruck)

Entspricht einem beliebigen einzelnen Zeichen

* entspricht 0 oder mehr davor. Die Zeichen

x* bedeutet Übereinstimmung mit einer beliebigen Anzahl von x Zeichen.

[..] Übereinstimmung mit einem beliebigen Zeichen in Klammern.
[abc] Übereinstimmung mit den Zeichen ab oder c > [0-9] Entspricht einer beliebigen Zahl
[0-9]* Entspricht einer beliebigen Zahl einer beliebigen Zahl
[a-z]* Entspricht einer beliebigen Anzahl von Buchstaben

^ bedeutet Beginnen Sie mit einem bestimmten Zeichen oder Zeichenfolge

^a bedeutet, mit dem Buchstaben a zu beginnen

$ bedeutet, mit einem bestimmten Zeichen oder einer bestimmten Zeichenfolge zu enden

s$ bedeutet, mit dem Buchstaben s zu enden

Die zum Abgleichen von Mustern mithilfe regulärer Ausdrücke verwendeten Operatoren sind:

REGEXP oder NOT REGEXP(RLIKE oder NOT RLIKE)

Hinweis: Vergleichsmuster für reguläre Ausdrücke, ihre regulären Wenn der Ausdruck irgendwo im Abgleich erscheint Feld, das Muster von

stimmt überein, und es ist nicht erforderlich, auf beiden Seiten ein Platzhalterzeichen einzufügen, damit es übereinstimmt.

Wenn nur das Platzhalterzeichen für die Übereinstimmung verwendet wird, gehen Sie davon aus N , dann zeigt das Übereinstimmungsmuster an, dass es größer oder gleich N ist.

Wie ist der obige Satz zu verstehen?

bedeutet

... Entspricht Daten, die größer oder gleich 3 Zeichen sind

.... Entspricht Daten, die größer oder gleich 4 Zeichen sind

# Abfrage der Benutzername mit dem Zeichen l Benutzer beginnend mit: ^l;
#Schreiben mit regulären Ausdrücken

SELECT * FROM user WHERE username REGEXP '^l';
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名正好是三个字符的用户:^...$;
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE '___';
#正则表达式写法
SELECT * FROM user WHERE username REGEXP '^...$';

Zusammenfassung: Das Obige ist der gesamte Inhalt davon Artikel, ich hoffe, er kann für alle hilfreich sein. Lernen hilft.

Verwandte Empfehlungen:

php Ausführliche Erklärung und Beispiele zum Auszug von Array-Verarbeitungsfunktionen

php in_array() Detaillierte Erklärung zur Überprüfung, ob ein bestimmter Wert im Array vorhanden ist

Lösung für das Problem, dass eine Anmeldung beim PHP-Magento-Hintergrund nicht möglich ist


Das obige ist der detaillierte Inhalt vonSo implementieren Sie Fuzzy-Abfragen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn