sql >> Database >  >> RDS >> SQLite

SQLite LIKE

Samenvatting :in deze zelfstudie leert u hoe u gegevens kunt opvragen op basis van patroonovereenkomst met behulp van SQLite LIKE telefoniste.

Inleiding tot SQLite LIKE telefoniste

Soms weet u niet precies het volledige zoekwoord dat u wilt opvragen. U weet bijvoorbeeld misschien dat uw meest favoriete nummer het woord elevator . bevat maar je weet de naam niet precies.

Als u gegevens wilt opvragen op basis van gedeeltelijke informatie, gebruikt u de LIKE operator in de WHERE clausule van de SELECT verklaring als volgt:

SELECT
	column_list
FROM
	table_name
WHERE
	column_1 LIKE pattern;Code language: SQL (Structured Query Language) (sql)

Merk op dat je ook de LIKE . kunt gebruiken operator in de WHERE clausule van andere instructies zoals de DELETE en UPDATE .

SQLite biedt twee jokertekens voor het construeren van patronen. Ze zijn procentteken % en onderstreping _ :

  1. Het procentteken % wildcard komt overeen met een reeks van nul of meer tekens.
  2. Het onderstrepingsteken _ jokerteken komt overeen met elk afzonderlijk teken.

Het procentteken % voorbeelden van jokertekens

De s% patroon dat het jokerteken procentteken gebruikt ( % ) komt overeen met elke tekenreeks die begint met s bijv.,son en so .

De %er patroon komt overeen met elke tekenreeks die eindigt op er zoals peter , clever , enz.

En de %per% patroon komt overeen met elke tekenreeks die per . bevat zoals percent en peeper .

Het onderstrepingsteken _ voorbeelden van jokertekens

De h_nt patroon komt overeen met hunt , hint , enz. De __pple patroon komt overeen met topple , supple , tipple , enzovoort.
Merk op dat SQLite LIKE operator is niet hoofdlettergevoelig. Het betekent "A" LIKE "a" is waar.

Voor Unicode-tekens die niet in het ASCII-bereik liggen, wordt de LIKE operator is hoofdlettergevoelig, bijv. "Ä" LIKE "ä" is fout.
Als je LIKE . wilt maken operator werkt hoofdlettergevoelig, u moet de volgende PRAGMA gebruiken:

PRAGMA case_sensitive_like = true;Code language: SQL (Structured Query Language) (sql)

SQLite LIKE voorbeelden

We gebruiken de tabel tracks in de voorbeelddatabase voor de demonstratie.

Om de nummers te vinden waarvan de naam begint met de Wild letterlijke tekenreeks, gebruik je het procentteken % jokerteken aan het einde van het patroon.

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE 'Wild%'Code language: SQL (Structured Query Language) (sql)

Probeer het

Om de nummers te vinden waarvan de naam eindigt op Wild woord, gebruik je % jokerteken aan het begin van het patroon.

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Wild'Code language: SQL (Structured Query Language) (sql)

Probeer het

Om de tracks te vinden waarvan de namen de Wild bevatten letterlijke tekenreeks, gebruik je % jokerteken aan het begin en einde van het patroon:

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE '%Wild%';Code language: SQL (Structured Query Language) (sql)

Probeer het

De volgende instructie vindt de tracks waarvan de namen bevatten:nul of meer tekens (% ), gevolgd door Br , gevolgd door een teken ( _ ), gevolgd door wn , en gevolgd door nul of meer tekens ( % ).

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Br_wn%';Code language: SQL (Structured Query Language) (sql)

Probeer het

SQLite LIKE met ESCAPE clausule

Als het patroon dat u wilt matchen % . bevat of _ , moet u een escape-teken gebruiken in een optionele ESCAPE clausule als volgt:

column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)

Wanneer u de ESCAPE . specificeert clausule, de LIKE operator evalueert de expression die volgt op de ESCAPE trefwoord naar een tekenreeks die uit een enkel teken bestaat, of een escape-teken.

Vervolgens kunt u dit escape-teken in het patroon gebruiken om een ​​letterlijk procentteken (%) of onderstrepingsteken (_) op te nemen ). De LIKE operator evalueert het procentteken (% ) of onderstrepingsteken (_ ) dat het escape-teken volgt als een letterlijke tekenreeks, geen jokerteken.

Stel dat u wilt overeenkomen met de tekenreeks 10% in een kolom van een tabel. SQLite interpreteert echter het procentteken % als het jokerteken. Daarom moet u ontsnappen aan dit procentteken % een escape-teken gebruiken:

column_1 LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

In deze uitdrukking is de LIKE operator interpreteert het eerste % en het laatste % procentteken als jokertekens en het tweede procentteken als een letterlijk procentteken.

Merk op dat u andere tekens als escape-teken kunt gebruiken, bijvoorbeeld /, @, $.

Beschouw het volgende voorbeeld:

Maak eerst een tabel t die één kolom heeft:

CREATE TABLE t(
	c TEXT
);Code language: SQL (Structured Query Language) (sql)

Voeg vervolgens enkele rijen toe aan de tabel t :

INSERT INTO t(c)
VALUES('10% increase'),
	('10 times decrease'),
	('100% vs. last year'),
	('20% increase next year');Code language: SQL (Structured Query Language) (sql)

Vraag vervolgens gegevens op uit de t tafel:

SELECT * FROM t;Code language: SQL (Structured Query Language) (sql)
c                     
----------------------
10% increase          
10 times decrease     
100% vs. last year    
20% increase next yearCode language: Shell Session (shell)

Ten vierde, probeer de rij te vinden waarvan de waarde in de c kolom bevat de 10% letterlijke tekenreeks:

SELECT c 
FROM t 
WHERE c LIKE '%10%%';Code language: SQL (Structured Query Language) (sql)

Het retourneert echter rijen waarvan de waarden in de c-kolom 10 bevatten:

c                 
------------------
10% increase      
10 times decrease 
100% vs. last year

Ten vijfde, om het juiste resultaat te krijgen, gebruikt u de ESCAPE clausule zoals getoond in de volgende vraag:

SELECT c 
FROM t 
WHERE c LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

Hier is de resultatenset:

c           
------------
10% increaseCode language: Shell Session (shell)

In deze zelfstudie hebt u geleerd hoe u SQLite LIKE . gebruikt operator om gegevens op te vragen op basis van patroonovereenkomst met twee jokertekens procentteken (% ) en onderstrepingsteken (_ ).


  1. Leer de MySQL-database gebruiken

  2. PDO::__construct():De server heeft een tekenset (255) verzonden die onbekend is bij de client. Alsjeblieft, rapporteer aan de ontwikkelaars

  3. Hoe vergelijk ik 2 rijen uit dezelfde tabel (SQL Server)?

  4. Android sqlite db.query leidt naar CursorIndexOutOfBoundsException