Heim  >  Artikel  >  Datenbank  >  SQL-Fuzzy-Abfrageanweisung

SQL-Fuzzy-Abfrageanweisung

angryTom
angryTomOriginal
2020-02-06 10:50:5231736Durchsuche

SQL-Fuzzy-Abfrageanweisung

SQL-Fuzzy-Abfrageanweisung

Die allgemeine Fuzzy-Anweisungssyntax lautet wie folgt:

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

Über die Bedingungen , SQL bietet vier Übereinstimmungsmodi:

1 %: steht für beliebige 0 oder mehr Zeichen. Kann mit Zeichen jeder Art und Länge übereinstimmen. Wenn es sich um Chinesisch handelt, verwenden Sie bitte zwei Prozentzeichen (%%), um es auszudrücken.

SELECT * FROM [user] WHERE u_name LIKE '%三%'

findet alle Datensätze mit „drei“ in u_name, wie „Zhang San“, „Zhang Cat San“, „Three-legged Cat“, „Tang Sanzang“ usw. Wenn Sie außerdem Datensätze mit „三“ und „cat“ in u_name suchen müssen, verwenden Sie bitte die und-Bedingung

SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

. Wenn Sie

SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'

verwenden, können Sie suchen für „三级“ Cat“, aber die Suche nach „Zhang Cat San“, die die Bedingungen erfüllt, konnte nicht gefunden werden.

2. _: steht für ein beliebiges einzelnes Zeichen. Entspricht einem einzelnen beliebigen Zeichen. Wird häufig verwendet, um die Zeichenlänge von Ausdrücken zu begrenzen:

 SELECT * FROM [user] WHERE u_name LIKE '_三_'

Suchen Sie nur „Tang Sanzang“, sodass u_name aus drei Zeichen besteht und das mittlere Zeichen „三“ ist " ;

SELECT * FROM [user] WHERE u_name LIKE '三__';

Finden Sie nur „dreibeinige Katze“, deren Name drei Zeichen hat und das erste Zeichen „三“ ist;

3. [ ] : steht für eines der in Klammern aufgeführten Zeichen (ähnlich einem regulären Ausdruck). Geben Sie ein Zeichen, eine Zeichenfolge oder einen Bereich an und verlangen Sie, dass das übereinstimmende Objekt eines davon ist.

SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

findet „Zhang San“, „Li San“, „Wang San“ (anstelle von „Zhang Li Wang San“);

als [ ] If Es gibt eine Reihe von Zeichen (01234, abcde usw.), die als „0-4“, „a-e“ abgekürzt werden können.

SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'

findet „alt 1“, „alt 2“ ,... ..., "老9";

4, [^]: Zeigt ein einzelnes Zeichen an, das nicht in Klammern aufgeführt ist. Sein Wert ist derselbe wie [], es ist jedoch erforderlich, dass das übereinstimmende Objekt ein anderes Zeichen als das angegebene Zeichen ist.

SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

findet „Zhao San“, „Sun San“ usw., die nicht „Zhang“, „Li“, „Wang“ heißen;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';

Schließt „Alt 1“ bis „Alt 4“ aus und sucht nach „Alt 5“, „Alt 6“,...

Wenn der Abfrageinhalt Platzhalter enthält

Aufgrund von Platzhaltern kann unsere Abfrageanweisung für Sonderzeichen „%“, „_“ und „[“ nicht normal implementiert werden. Die Sonderzeichen können jedoch normal abgefragt werden, wenn sie in „[ ] eingeschlossen sind. ". Darauf aufbauend schreiben wir folgende Funktion:

function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

Vor der Abfrage kann der zu prüfende String durch diese Funktion verarbeitet werden.

PHP chinesische Website, es gibt viele kostenlose SQL-Tutorials, jeder ist herzlich willkommen, es zu lernen!

Das obige ist der detaillierte Inhalt vonSQL-Fuzzy-Abfrageanweisung. 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